MySQL 权限管理

1、你有没有链接权限

2、你有没有执行操作的权限(select/update等)

 

对于1:服务器如何判断用户有没有权限链接上来?

依据三个参数:

你从哪来? host

你是谁? user

你的密码是多少? password

 

用户的这3个信息,存储在mysql.user表中

use mysql

desc user;

select host,user,password from user; //可以看到root只能通过localhost来链接

 

cmd:

ipconfig

mysql -h192.168.2.101 -uroot -p //链接报错

mysql -h127.0.0.1 -uroot -p

mysql -hlocalhost -uroot -p //可以链接

 

修改host域,使Ip可以链接

update user set host = '192.168.2.101' where user = 'root';

删除无关用户

delete from user where user='';

flush privileges; //一定要冲刷权限

mysql -h192.168.2.101 -uroot -p //可以链接

mysql -hlocahost -uroot -p //不能链接

 

局域网访问使用%通配符 192.168.1.%

 

如何修改用户的密码

update user set password=password('111111') where user='root';

flush privileges;

 

 

user表判断你能不能进来

db表判断用户有没有某个库的操作权

tables_priv判断用户有没有某张表的操作权

 

新增一个用户 在user表中全局授权

grant [权限1,权限2,权限3,...] on *.* to user@'host' identified by '密码'  //*.*代表所有库所有表

常用权限有:all,create,drop,insert,delete,update,select

grant all on *.* to lisi@'192.168.2.%' identified by '';

 

收回权限

revoke all on *.* from list@'192.168.1.%';

flush privileges;

 

赋权管理某一个库 //此时user表中权限全是N 但mysql.db表中lisi 对于ecshop表有操作权限

grant all on ecshop.* to lisi@'192.168.1.%';

 

收回权限 //db表中无权限数据

revoke all on ecshop.* from list@'192.168.1.%';

 

赋与表级别权限 //此时user表中lisi无权限 db表中无lisi数据 tables_priv中有lisi针对表的权限

grant insert,update,select on test_database.test_table to lisi@'192.168.1.%'; //用户可以增改查,但不能删数据

提示:如果在开发中,某张表的数据,是原始数据,不能被删除,除了在php的业务逻辑上来控制,还可以从mysql用户权限管理来控制

mysql的权限控制,甚至可以精确到列

常用的授权权限在手册中 grant部分

 

原文地址:https://www.cnblogs.com/shenmiyang/p/14989691.html