mysql权限检查原理:
用户------>服务器,分为两个阶段:
1.用户有没有权限连接上来
2.有没有权限执行此操作(增删查改)
对于1:服务器如何判断用户有没有权限连接
根据host,user,password这三个参数判断的,用户的这三个信息存储在mysql.user表中
修改host域,使ip可以连接,update user set host='192.168.1.101' where user='root';,然后重刷权限:flush privilcges;,然后再用ip 连接:
mysql -h192.168.1.102 -urppt -p;
把用户名为空的用户都删掉,安全着想,比如localhost本地访问
把用户的密码改掉update,在冲刷权限
update user set password=password('11111) where XXXXX;
如何添加一个用户并为他指定部分的权限------全局授权也就是可以操作所有数据库的权限
新增一个用户 grant [权限1,权限2,权限3,。。。。] on *.* to user@'host' identified by 'password';-----给user用户分配所有数据库中的所有表的某些权限
常用权限有 all,create,drop,insert,delete,update,select
grant all on *.* to lisi@'192.168.1.%' identifien by '1111';
-- 收回权限:revoke all on *.* from lisi@'192.168.1.%' ;,再冲刷一下
针对某个库做授权,还以对该用户做某个数据库的授权----一个数据库
grant all on ecshop.* to lisi@'192.168.1.%';
查看db下的user用户的权限---select * from db\G
收回用户在某个库的权限--------revoke all on ecshop.* from lisi@'192.168.1.%';
针对表做授权
grant insert,update,select on gy3.goods to lisi@'192.168.1.%';测试结果:用户可以增改查,但是不能删数据
查看表级别授权-----select * from tables_priv \G;
提示:mysql的权限控制可以精确到列(查看手册)
总结mysql权限控制流程:
user (判断是否有全局操作权限) 否---->db(判断用户有没有某个库的操作权) 否------>tables_priv(查看有没有表的操作权限)