MySQL知识(二十一)——用户管理之权限管理、访问控制
来源:互联网 发布:base64 js 源码 编辑:程序博客网 时间:2024/05/06 13:24
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权限
GRANT SELECT,INSERT ON *.* TO 'grantUser'@'localhost' IDENTIFIED BY 'grantpwd'WITH GRANT OPTION;
1.3 收回权限
收回权限就是取消已经赋予用户的某些权限。MySQL中使用REVOKE语句取消用户的某系权限。
(1)收回用户所有权限
REVOKE ALL PRIVILEGES,GRANT OPTIONFROM 'user'@'host'[,'user'@'host'...]
(2)收回用户指定权限
REVOKE pri_type [(columns)][,priv_type[(columns)]]...ON table1,table2,...,tablenFROM 'user'@'host'[,'user'@'host'...]
priv_type:表示权限类型
columns:表示权限作用于哪些列上,默认作用域整个表
table1,table2,…,tablen:表示从那个表中收回权限
‘user’@’host’:表示用户账户
(3)例子,取消用户testUser的更新权限
mysql> REVOKE UPDATE ON *.* FROM 'testUser'@'localhost';Query OK, 0 rows affectedmysql> SELECT Host,User,Select_priv,Update_priv,Grant_priv FROM mysql.user WHERE user='testUser';+-----------+----------+-------------+-------------+------------+| Host | User | Select_priv | Update_priv | Grant_priv |+-----------+----------+-------------+-------------+------------+| localhost | testUser | Y | N | N |+-----------+----------+-------------+-------------+------------+1 row in set
1.4 查看权限
SHOW GRANTS FOR 'user'@'host';
例如查看testUser用户d权限信息:
mysql> SHOW GRANTS FOR 'testUser'@'localhost';+------------------------------------------------------------------------------------------------------------------+| Grants for testUser@localhost |+------------------------------------------------------------------------------------------------------------------+| GRANT SELECT ON *.* TO 'testUser'@'localhost' IDENTIFIED BY PASSWORD '*633B5898492ADFB22FB272BD8F047574F383F043' |+------------------------------------------------------------------------------------------------------------------+1 row in set
2 访问控制
正常情况下,并不希望每个用户都可以执行所有的数据库操作。当MySQL允许一个用户执行各种操作时,它将首先核实该用户向MySQL服务器发送的连接请求,然后确认用户的操作请求是否被允许。
2.1 连接核实阶段
即客户端用户向服务器提供用户名、密码、主机地址,进行连接核实。
2.2 请求核实阶段
即对连接上的每个请求,服务器检查用户要执行的操作,然后检查是否有足够的权限来执行它。
2.3 图解
说明
阅读《MySQL5.5 从零开始学》笔记摘抄。
- MySQL知识(二十一)——用户管理之权限管理、访问控制
- mysql的用户管理和权限管理(访问控制)
- Mysql之访问控制与权限管理
- MySQL知识(十九)——用户管理之权限表
- MySQL知识(二十)——用户账户管理
- 权限管理 之二 权限管理与访问控制概要设计(转载)
- MYSQL入门学习之二十一:MYSQL用户管理
- MySQl 用户管理和权限管理(二)
- mysql管理数据库用户和访问权限
- MySQL用户管理和访问权限
- Oracle12C--权限管理(二十一)
- 大唐任务管理系统--用过滤器控制用户访问权限
- MySQL学习之:用户管理(添加用户,删除用户,添加权限,查看权限,密码等)
- MySQL学习笔记之二十一 用户的权限
- 自我消遣之二:权限管理与访问控制概要设计
- 自我消遣之二:权限管理与访问控制概要设计
- mysql 用户管理,权限管理,新建用户
- Mysql用户结构,用户管理,权限管理
- zstu 1024 Wooden Sticks
- Mac下利用shadowsocks配置Dropbox代理服务器
- 关于用struts2框架中iframe对应的jsp页面的不到action的值的问题
- Leetcode ☞ 319. Bulb Switcher ☆ brain teaser
- 1016: [JSOI2008]最小生成树计数
- MySQL知识(二十一)——用户管理之权限管理、访问控制
- 从Eclipse迁移到Android Studio
- 认识数据仓库建设意义
- c语言:求三个数中的最大值(双分支结构)
- JavaScript 垃圾回收
- 【Manthan, Codefest 16B】【二分 or 递推暴力】A Trivial Problem 输出阶乘为m的所有数
- 微信-弹幕是怎么搞出来的,看svg!
- [LeetCode]62 不同的路径总数
- SVD奇异值分解