欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL用户与权限

程序员文章站 2023-11-15 16:32:28
用户连接到mysql,并做各种查询,在用户和服务器中间分为两个阶段: 1:用户是否有权连接上来 2:用户是否有权执行此操作(如select,update等等) 先看第一个阶段:服务器如何判断用户是否有权连接上来 依据三个参数: 你从哪来? host 你是谁? user 你的密码是多少? passwo ......

用户连接到mysql,并做各种查询,在用户和服务器中间分为两个阶段:

1:用户是否有权连接上来

2:用户是否有权执行此操作(如select,update等等)

先看第一个阶段:服务器如何判断用户是否有权连接上来

依据三个参数:

你从哪来? host

你是谁?    user

你的密码是多少? password

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

---------------------------------------------

修改host域,使ip可以连接

update user set host='ip地址' where user='root';
flush privileges;#冲刷权限

我们也可以删除用户使此用户无法连接:

delete from user where user='';
flush privileges;

-------------------------

如何修改用户的密码:

在mysql8.0版本以上修改密码的话使用如下语句完成:

use mysql
alter user 'root'@'localhost' identified with mysql_native_password by '你的密码';
flush privileges; 

新增一个用户并授权:

mysql8.0以下的使用下面的语句

grant [权限1,权限2,权限3......]on 哪个库.哪张表 to 用户@'host' identfied by 'password';

mysql8.0以上需要将创建用户和授权分开进行:

#创建新用户: 
create user 'lisi'@'192.168.3.110' identified by'111111';
#给新用户授权:
grant all privileges on *.* to 'lisi'@'192.168.3.110';

MySQL用户与权限

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

 我们来查看一下lisi用户的全局权限:

MySQL用户与权限

可以看到他的权限是非常大的;那么现在我们要收回权限:

#收回权限
revoke all on *.* form 'lisi'@'192.168.3.110';

那么我们授权lisi用户的test库权限:

grant all on test.* to 'lisi'@'192.168.3.110';

然后我们再看lisi用户的全局权限:

select * from user where user='lisi'\g

MySQL用户与权限

我们看到它的全局权限变成了no,但是他真的就没有任何权限吗?

其实不是的,他在db表的记录里还有权限:

select * from db where user='lisi'\g

MySQL用户与权限

而且我们show databases;可以发现他还有操作test库的权力:

MySQL用户与权限

 -------------------------------------------

同样的,我们使用grant all on test.goods to 'lisi'@'192.168.3.110';这条语句还能赋予lisi操作表的权力。