Mysql的权限管理其实就是对操作的管理(增删改查这些)主要分为四个方面:
- 对数据库系统的权限管理
- 对单个数据库的权限管理
- 对数据表的权限管理
- 对属性列的权限管理
首先新建一个用户
create user '用户名'@'允许登录数据库的ip地址' identified by '密码';
// 登录语句:
mysql -u用户名 -p密码 -h服务端ip
相应的权限管理分别对应以下mysql数据库中的表
- user表:对数据库系统的权限,也就是对数据库系统的所有数据库的所有表的权限管理。如果一个用户有相应的权限,比如
Select_priv
权限,那么他可以对所有数据库中的表进行select
操作
现在我刚刚新建了 ls 用户,尝试用这个用户查询 root 用户建立的jw
数据库的s
表
可以看到Select_priv
权限是 N
直接就找不到jw
数据库
把Select_priv
权限改为 Y
然后测试
grant select on *.* to 'ls'@'localhost';
如果是所有权限则grant all on *.* to 'ls'@'localhost';
更新 flush privileges;
可以查到内容
尝试更改内容,则没有权限
- db表:对单个数据库的权限,设置为
Y
则该用户对这一个数据库的所有表都有相应的权限
grant select on jw.* from to 'ls'@'localhost';
- tables_priv表:对单个表的权限管理,语句为:
grant select on jw.s to 'ls'@'localhost';
- columns_priv表:对单个表的部分属性进行权限管理
grant select(id), update(id) on jw.s to 'ls'@'localhost';
同时也有相应的收回权限语句
revoke select on *.* from 'ls'@'localhost';
revoke select on jw.* from 'ls'@'localhost';
revoke select on jw.s from 'ls'@'localhost';