本篇文章主要介绍了"MySQL知识(二十一)——用户管理之权限管理、访问控制",主要涉及到方面的内容,对于MySql感兴趣的同学可以参考一下:
1 权限管理 权限管理主要是对登录到MySQL的用户进行权限验证。所有用户的权限都存储在MySQL的权限表中,不合理的权限规划会给MySQL服务器带来安全隐患...
1 权限管理
权限管理主要是对登录到MySQL的用户进行权限验证。所有用户的权限都存储在MySQL的权限表中,不合理的权限规划会给MySQL服务器带来安全隐患。
MySQL权限系统的主要功能是证实连接到一台给定主机的用户,并且赋予该用户在数据库上的SELECT、INSERT、UPDATE和DELETE权限。
1.1 MySQL的各种权限
账户权限信息被存储在MySQL数据库的user、db、host、tables_priv、column_priv和procs_priv表中。MySQL启动时,服务器将这些数据库表中的权限信息的内容读入内存。
GRANT和REVOKE语句所涉及的权限的名称如下:


(1)CREATE和DROP权限,可以创建新数据库和表,或删除已有数据库和表。
(2)SELECT、INSERT、UPDATE和DELETE权限,允许在数据库表上进行操作
(3)INDEX权限允许创建或删除索引
(4)ALTER,允许更改表的结构和重命名表
(5)CREATE ROUTINE,创建保存函数和程序
(6)GRANT,允许授权给其他用户
(7)FILE权限,允许用户能读或写MySQL服务器上的任何文件。
1.2 授权
授权就是为某个用户授予权限。授予的权限可以分为多个层级:
(1)全局层级
适用于一个给定服务器中的所有数据库,权限存储在mysql.user表中,例如GRANT ALL ON *.*和REVOKE ALL ON *.*
(2)数据库层级
…一个给定数据库中的所有目标。…mysql.db和mysql.host表…,GRANT ALL ON db_name.和REVOKE ALL ON db_name.
(3)表层级
…给定表中的所有列。…mysql.table_priv表。GRANT ALL ON db_name.tbl_name 和REVOKE ALL ON db_name.tbl_name…
(4)列层级
…一个给定表中的单一列。…mysql.columns_priv表。
(5)子程序层级
…
例子:使用GRANT语句创建一个新的用户grantUser,密码为‘grantpwd’。用户grantUser对所有的数据有查询、插入权限。并授于GRANT权限
GRANTSELECT,INSERTON *.* TO'grantUser'@'localhost'IDENTIFIED BY'grantpwd'WITHGRANTOPTION;
1.3 收回权限
收回权限就是取消已经赋予用户的某些权限。MySQL中使用REVOKE语句取消用户的某系权限。
(1)收回用户所有权限
REVOKE ALL PRIVILEGES,GRANTOPTIONFROM'user'@'host'[,'user'@'host'...]
(2)收回用户指定权限