MySQL用户管理

109 阅读4分钟

数据库用户管理

DCL:数据控制语言,用于设置或者更改数据库用户或角色权限

新建用户

create user '用户名'@'源地址' identified by '密码';

'用户名'
指定将创建的用户名

'来源地址'
指定新创建的用户可在哪些主机上登录
可使用IP地址、网段、主机名的形式
本地用户可用localhost
允许任意主机登录可用通配符%

'密码'
若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;

若使用加密密码,需要先使用select password('密码'); 获取密文,再在语句中添加 password '密文';

若省略“identified by”部分,则用户的密码将为空(不建议使用)

set global validate_password_policy=0;
set global validate_password_length=1;
#修改密码策略,可以设置简单的密码,绕过复杂密码检测

image.png

查看用户信息

创建后的用户保存在 mysql 数据库的 user 表里

use mysql; 
select user,authentication_string,Host from user;

image.png

查看用户信息

创建后的用户保存在 mysql 数据库的 user 表里

mysql> use mysql;
Database changed
mysql> select user,authentication_string,Host from user;
+---------------+-------------------------------------------+---------------+
| user          | authentication_string                     | Host          |
+---------------+-------------------------------------------+---------------+
| root          | *6691484EA6B50DDDE1926A220DA01FA9E575C18A | localhost     |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost     |
| mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost     |
| test          | *7BB96B4D3E986612D96E53E62DBE9A38AAA40A5A | 192.168.137.% |
| mhauser       | *7BB96B4D3E986612D96E53E62DBE9A38AAA40A5A | 192.168.137.% |
| hzw           | *6691484EA6B50DDDE1926A220DA01FA9E575C18A | 192.168.137.% |
+---------------+-------------------------------------------+---------------+
6 rows in set (0.00 sec)

image.png

查看当前登录用户

select user();

image.png

重命名用户

rename user '旧用户名'@'源地址' to '新用户名'@'源地址';

image.png

image.png

删除用户

drop user 'hzw'@'192.168.137.%';

image.png

修改当前登录用户密码

set password = password('abc123');

image.png

image.png

image.png

修改其他用户密码

方式一

set password for 'wf'@'192.168.137.%' = PASSWORD('123123');

image.png

方式二

alter user '用户名'@'源地址' identified by '密码'; 

alter user 'wz'@'%' indentified by '123123'

image.png

image.png

忘记 root 密码的解决办法

1.修改 mysql配置文件/etc/my.cnf ,不使用密码直接登录到 mysql

skip-grant-tables #添加,使登录mysql不使用授权表

image.png

image.png

2.使用 update 修改 root 密码,刷新数据库

use mysql; 
update user set authentication_string=password('密码') where user='root'; 
FLUSH PRIVILEGES; 
quit 

mysql -u root -pabc123

image.png

image.png

数据库用户授权

授予权限

grant语句:专门用来设置数据库用户的访问权限。
当指定的用户名不存在时,grant语句将会创建新的用户;
当指定的用户名存在时, grant 语句用于修改用户信息。

grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' [indentified by '密码'];
  • 权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。
  • 数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符“”。例如,使用“kgc.”表示授权操作的对象为 kgc数据库中的所有表。
  • 用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。
  • 来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.byyb.com”、“192.168.80.%”等。
  • IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分,则用户的密码将为空。
#允许用户 wf 在本地查询 wz 数据库中 所有表的数据记录,但禁止查询其他数据库中的表的记录。
grant select ON wz.* TO 'wf'@'192.168.137.%' IDENTIFIED BY '123123';

#允许用户 hzw 在所有终端远程连接 mysql ,并拥有所有权限。
GRANT ALL [PRIVILEGES] ON *.* TO 'hzw'@'%' IDENTIFIED BY 'abc123';

flush privileges;
quit

mysql -u wf -p123123
use wz;
show tables;
select * from wz1;

查看权限

show grants for 用户名@来源地址;
show grants for 'wf'@'192.168.137.%';

image.png