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部分