>데이터 베이스 >MySQL 튜토리얼 >MySQL 권한 및 보안 관리

MySQL 권한 및 보안 관리

齐天大圣
齐天大圣원래의
2020-05-29 09:11:151822검색

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 affected

Authorization

学完了如何创建账号及管理账号后,我们来看看如何给用户授权以及如何回收不需要的权限。

用户授权

给用户授权语法如下:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.