집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 권한 및 보안 관리
Mysql 권한 시스템은 매우 중요하지만 동시에 많은 개발자나 관리자가 무시하는 부분이기도 합니다. 권력의 분배는 돌이킬 수 없는 비극적인 결과를 가져올 뿐만 아니라. 제가 이전에 근무했던 회사에서는 데이터베이스 권한에 전혀 관심을 두지 않았습니다. 모든 개발자는 온라인 시스템에 대해 가장 높은 권한을 갖고 있었습니다. 생각해 보세요. 어느 날 누군가가 데이터베이스를 삭제한다면 그 많은 사람들 중에서 누가 그런 짓을 했는지 아시나요? 그러므로 모두가 그것에 주의를 기울여야 한다.
일반적으로 가장 높은 권한은 한 사람에게만 부여하는 것이 좋으며, 이 사람이 관리자 역할을 한 후 해당 권한을 다른 개발자에게 할당합니다. 개발 단계에서는 로컬 라이브러리가 더 좋습니다. 온라인 라이브러리의 경우 권한을 부여할 때 주의하세요.
권한 인증의 원리
MySQL의 권한 인증은 두 가지 측면을 통해 인증됩니다. 먼저, 사용자의 IP, 사용자 이름, 비밀번호가 확인됩니다. 확인을 통과한 사용자만 MySQL에 접속할 수 있습니다. 연결되면 사용자가 작업을 수행할 때 MySQL은 권한이 있는 경우에만 사용자가 요청한 작업을 수행합니다. 그렇지 않으면 실행되지 않습니다.
Mysql 권한 분류
MySQL 권한은 크게 세 가지 범주로 나뉩니다.
데이터에 대한 추가, 삭제, 수정, 확인 등의 작업입니다.
라이브러리 생성, 테이블 구조 수정 등과 같은 구조 작업
사용자 생성, 권한 할당 등 관리 권한
Mysql 권한 할당 원칙
예를 들어, 사용자에게 현재 보기 권한만 필요하고 하나의 테이블만 보면 되는 경우 모든 테이블에 읽기 권한을 할당하지 마세요. 하나의 테이블에만 권한을 제한하십시오. 모든 테이블에 읽기 권한을 부여하는 문제를 두려워하지 마십시오.
사용자를 생성할 때 IP 주소를 제한하고 비밀번호를 충분히 강력하게 설정하세요.
불필요한 사용자를 정기적으로 정리하고 불필요한 권한을 되찾아주세요.
계정 관리
계정 만들기
mysql 문서에서 사용자를 생성하는 구문은 다음과 같습니다.
CREATE USER [IF NOT EXISTS] user [auth_option] [, user [auth_option]] ... [REQUIRE {NONE | tls_option [[AND] tls_option] ...}] [WITH resource_option [resource_option] ...] [password_option | lock_option] ...
많은 매개변수가 있으니 걱정하지 마세요. 시간을 갖고 예제를 살펴보세요. 최소한의 옵션으로 계정을 만드는 것부터 시작해 보세요.
# 创建一个无需密码即可本地登录的用户 mysql> CREATE USER 'u1'@'localhost'; Query OK, 0 rows affected # 创建一个需要密码授权的用户,但不限制ip mysql> CREATE USER 'u2'@'%' identified by '321232'; # 注意,密码必须使用引号,单引号或双引号都行,但不加就出错。 # 如果不想使用明文的密码,可以使用password mysql> select password('111111'); +-------------------------------------------+ | password('111111') | +-------------------------------------------+ | *FD571203974BA9AFE270FE62151AE967ECA5E0AA | +-------------------------------------------+ 1 row in set mysql> CREATE USER 'u3'@'192.168.1.%' IDENTIFIED BY PASSWORD '*FD571203974BA9AFE270FE62151AE967ECA5E0AA'; Query OK, 0 rows affected
사용자 목록 보기
시스템 사용자 목록은 mysql 라이브러리의 사용자 테이블에 저장됩니다.
mysql> SELECT user,host,account_locked FROM mysql.user;
+---------------+---------------+--- -----------+
| 사용자 | 호스트 | 계정 잠김 |
+------------+--------- ---+---+
| 루트 | 로컬호스트 | N |
| 로컬호스트 | | N | u2 | 192.168.1.% | N |
+--------- -----+----------------+
7 행 세트
delete user
delete 사용자 구문은 다음과 같습니다. DROP USER 用户名@ip;
이제 u2@'%'
mysql> drop user u2@'%'; Query OK, 0 rows affected를 삭제하여 u2 사용자를 삭제해보겠습니다. 사용자 계정 수정
구문은 다음과 같습니다. rename user old@'oldip' to new@'newip';
사례는 다음과 같습니다.
mysql> RENAME USER u1@localhost to user1@'127.0.0.1'; Query OK, 0 rows affectedAuthorization
学完了如何创建账号及管理账号后,我们来看看如何给用户授权以及如何回收不需要的权限。
用户授权
给用户授权语法如下:
GRANT 权限 ON 数据库名*表名 TO 用户名@ip;
案例如下:
mysql> GRANT SELECT ON *.* TO 'u1'@'localhost' ; Query OK, 0 rows affected (0.00 sec) -- 全局级别授权 mysql> GRANT ALL ON test.* TO 'u2'@'localhost'; Query OK, 0 rows affected (0.00 sec) -- 数据库级别授权 mysql> GRANT ALL ON test.student TO 'u3'@'localhost' WITH GRANT OPTION; -- 表级别授权
查看用户的权限
给用户授权后,我们来查看用户是否已经获得到了这些权限。
回收用户权限
当发现给与的权限多了,那么就应该及时回收这些权限。回收权限的语法和授权的语法非常像。
REVOKE 权限 ON 数据库*表 FROM 用户名@ip地址
위 내용은 MySQL 권한 및 보안 관리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!