zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

mysql:权限管理

mysql权限 管理
2023-09-27 14:27:10 时间

用户连接到mysql,并做各种查询。

用户<====> 服务器

  1. 你有没有权限连接
  2. 有没有权限执行操作(select,update等等)

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

依据3个参数:
你从哪来?host
你是谁?user
你的密码?password
这三个信息存储在 mysql.user表中
比如你可以改一下user表,然后flush privileget 刷新权限

修改用户密码?

update user set password := password('123') where xxx
// 表是在内存中的,必须冲刷权限
flush privileges

思考:如何让局域网的人都能连接进来?

对于2:有没有权限执行操作?

user表判断你能不能进来(全局性质的授权)
db表判断你有没有库的操作权限
tables_priv判断你有没有单张表的操作权。

具体可查看之前一篇文章https://blog.csdn.net/weixin_43972437/article/details/103135954

加权限的语法:

// *.* 代表所有数据库的所有表
grant [权限1, 权限2, ...] on *.* to user@'host' identified by 'password'

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

user级

给 lisi 添加权限 all

// %通配
grant all on *.* to lisi@"192.168.1.%" identified by '11111'

我们来 select * from user where user="lisi" 发现他的权限是很大的,我们收回权限。

revoke all on *.* from lisi@"192.168.1.%"

db级

针对某个库做授权:

grant all on ecshop.* to lisi@"192.168.1.%"

lisi 使用 show database 的话,只能看到 ecshop 这个库。

revoke all on ecshop.* to lisi@"192.168.1.%"

tables_priv级

grant create,drop,insert,update,select on gy3.goods to lisi@"192.168.1.%"

总结权限

user
DB
table_prv

先看用户有没有user权限,再看db,再看table_prv