豆掰娱乐
您的当前位置:首页MySQL权限管理相关

MySQL权限管理相关

来源:豆掰娱乐



二、MySQL权限经验原则:

权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:

1、只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。

2、创建用户的时候用户的登录主机,一般是成指定IP或者内网IP段。

3、初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。

4、为每个用户设置满足密码复杂度的密码。

5、定期清理不需要的用户。回收权限或者删除用户。


三、权限增、删、查、改操作

添加:

权限的添加用grant (文档)命令来添加,具体格式如下:


GRANT
 priv_type [(column_list)]
 [, priv_type [(column_list)]] ...
 ON [object_type] priv_level
 TO user_specification [, user_specification] ...
 [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
 [WITH with_option ...]

object_type:
 TABLE
 | FUNCTION
 | PROCEDURE

priv_level:
 *
 | *.*
 | db_name.*
 | db_name.tbl_name
 | tbl_name
 | db_name.routine_name

user_specification:
 user [IDENTIFIED BY [PASSWORD] 'password']

ssl_option:
 SSL
 | X509
 | CIPHER 'cipher'
 | ISSUER 'issuer'
 | SUBJECT 'subject'

with_option:
 GRANT OPTION
 | MAX_QUERIES_PER_HOUR count
 | MAX_UPDATES_PER_HOUR count
 | MAX_CONNECTIONS_PER_HOUR count
 | MAX_USER_CONNECTIONS count


PS:

with_option 是对所授权限的一些或管理,例如 with grant option 表示被授权的用户拥有对其他用户授予同样权限的能力

删除:

权限的删除用revoke (官方文档)命令来添加,具体格式如下:

REVOKE
 priv_type [(column_list)]
 [, priv_type [(column_list)]] ...
 ON [object_type] priv_level
 FROM user [, user] ...

REVOKE ALL PRIVILEGES, GRANT OPTION
 FROM user [, user] ...


例子:

假如你要删除用户jeffrey@localhost 对所有数据库的插入权限,请用下边命令

REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost';

假如你还要随便删除其授权的权限,可用:

REVOKE grant option ON *.* FROM 'jeffrey'@'localhost';

当然,你也可以向赋予权限那样用all privilege删除所有权限(ps:all privilege 不包含 grant 权限)

REVOKE all privileges ON *.* FROM 'jeffrey'@'localhost';

查看:

show grants (官方文档)命令由于查看用户的权限

SHOW GRANTS [FOR user]

当 for user被缺省时,显示所有查询用户可见用户的权限:

mysql> show grants;
+-------------------------------------------------------------------------------
---------------------------------------------------------+
| Grants for root@localhost
 |
+-------------------------------------------------------------------------------
---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*81F
5E21E35407D884A6CD4A731AEBFB6AF209E1B' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
 |
+-------------------------------------------------------------------------------
---------------------------------------------------------+
2 rows in set (0.00 sec)
查看root用户权限:
SHOW GRANTS FOR 'ROOT'@'LOCALHOST'

四、实际应用及一些坑

显示全文