mysql 用户管理的粗略认识

1.创建新用户并使用grant赋予权限:

CREATE USER 'z1'@'%' IDENTIFIED BY '123456'; #其中,'z1'@'%' 是指新建用户z1,使用该用户名可以从任何主机来连接数据库,'123456'是密码

刚创建的用户默认是没有权限的,需要使用grant指令进行权限的授予,如下所示:

grant指令完整格式:grant 权限列表 on 数据库名.数据表名 to ‘用户名’@’主机’ identified by ‘密码’ with grant option;

数据库名.*代表库下所有的表;

可使用“*”表示所有数据库或所有数据表,“%”表示任何主机地址。

with grant option:这个选项表示该用户可以将自己拥有的权限授权给别人,可以不添加

也可以使用grant指令在授权时修改密码,例如:grant select on *.* to z2@localhost identified by '111111' with grant option;

权限列表可参考:https://blog.51cto.com/11555417/2160730,常见的有create/drop/select/delete等

给用户赋权限:

GRANT ALL PRIVILEGES ON *.* TO z1; #增加除Grant_priv以外的所有权限
GRANT ALL PRIVILEGES ON *.* TO z1 WITH GRANT OPTION; #增加Grant权限

关于远程登录的其他知识点:

Host值
User值
匹配的连接
%
'z1'
z1 可以从任何主机来连接
%
''
任何用户,可以从任何主机来连接
%.loc.gov
'z1'
z1 可以从loc.gov域的任何主机来连接
172.168.18.200
'z1'
z1 可以从172.168.18.200的ip地址的主机来连接
172.168.18.%
'z1'
z1 可以从172.168.18 的网段的任何主机来连接

2.查看用户权限:

select * from user\G;
SHOW GRANTS FOR z1; #host值是%,只要输入用户名
SHOW GRANTS FOR z1@localhost; #如果host值不是%,则需要输入host 

3. Mysql用户权限回收:

revoke指令格式:revoke 权限列表 on 数据库名.数据表名 from 用户名@主机;

示例:

revoke drop on *.* from test@localhost;#回收drop权限
revoke update,insert on *.* from test@'%';#回收insert,update权限 

如果使用grant  db.*的方式给与了select,update权限,后边再使用revoke回收某张表的update权限是不起作用的

4. 对账户重命名:

rename user '旧用户名'@'旧主机' to '新用户名'@'新主机';

示例:

rename user z1@'%' to z2@localhost;

除了rename外,还可以使用update的方式

use mysql;
update user set user =‘z2’,host='localhost' where user =‘z1’ and host='%';

MySQL 5.7 新增了mysql.session 和 mysql.sys两个默认用户,这两个用户别乱动。

mysql.sys:用于 sys schema中对象的定义。使用 mysql.sys 用户可避免DBA重命名或者删除root用户时发生的问题。该用户已被锁定,客户端无法连接。
mysql.session:插件内部使用来访问服务器。该用户已被锁定,客户端无法连接。

参考:MySQL修改用户名

5. Mysql用户密码修改:

方法一:使用set password命令

set password for '用户名'@'主机' ='新密码';
#flush privileges;#在mysql5.7.28中不刷新权限,也立即生效了

示例:

SET PASSWORD FOR 'z2'@'localhost' ='7777';

方法二:使用grant指令在授权时修改密码:

grant select on 数据库名.数据表名 to 用户名@主机 identified by '新密码' with grant option;

示例:

grant select on *.* to z2@localhost identified by '111111' with grant option;#会有报警,意思是说后续mysql版本中会移除该修改密码的方式,可以使用 ALTER USER的方式代替。该方式失效

方法三:运行mysqladmin脚本文件

该文件一般在mysql安装目录下的bin目录中。进入该目录,根据一下两种具体情况输入命令(只有root用户有这个权限)。

bin目录:/usr/bin,在该目录下有可执行文件mysqladmin

(1)用户尚无密码:

mysqladmin -u 用户名 password 新密码;

(2)用户已有密码:

mysqladmin -u 用户名 -p password 新密码; 回车后会提示输入旧密码
举例:mysqladmin -u z2 -p password 8888

 执行后会有警告信息,不影响

6.删除用户

DROP USER <用户名1> [ , <用户名2> ]drop user '用户名'@'主机';

使用 DROP USER 语句应该注意以下几点:

  • DROP USER 语句可用于删除一个或多个 MySQL 账户,并撤销其原有权限。
  • 使用 DROP USER 语句必须拥有 MySQL 中的 MySQL 数据库的 DELETE 权限或全局 CREATE USER 权限。
  • 在 DROP USER 语句的使用中,若没有明确地给出账户的主机名,则该主机名默认为“%”。

参考:https://www.cnblogs.com/MrHSR/p/9809702.html

https://www.cnblogs.com/MrHSR/p/9817735.html

https://blog.51cto.com/11555417/2160730

posted @ 2021-09-23 15:03  声声慢43  阅读(243)  评论(0编辑  收藏  举报