在数据库服务中,也是有用户知识概念的,类似系统中的用户管理应用,主要利用用户管理知识,可以实现:

  • 用户登录数据库服务系统中(实现数据库服务登录)

  • 用户管理数据库服务中对象(实现数据库对象管理)

数据库用户创建:'用户名称'@'白名单信息'

白名单信息:网段IP信息或者名称信息

创建用户

MySQL> create user zzp@'192.168.126.%' identified by '123456';

查询用户信息

image-20240610213408690

authenfication_string:存储用户加密密码

plugin:用户验证用户身份的插件,有mysql_native_password、caching_sha2_password

plugin插件相关内容

5.7之前版本

用户密码加密插件使用的早期版本时,可以保证客户端程序正常登陆,保证主从架构数据正常,保证集群通讯不受到影响;加密插件为:mysql_native_password

mysql> show  variables like '%authen%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | mysql_native_password |
+-------------------------------+-----------------------+
1 row in set (0.00 sec)

5.7之后版本

用户密码加密插件使用的后期版本时,将会导致客户端程序无法登录,导致主从架构数据正常,影响集群正常通讯过程;加密插件为:caching_sha2_password

mysql> show variables like '%auth%';
+-------------------------------+----------------------------------------+
| Variable_name                   |          Value                            |
+-------------------------------+----------------------------------------+
| default_authentication_plugin |          caching_sha2_password            |
+-------------------------------+----------------------------------------+
1 row in set (0.01 sec)

为了解决数据库服务升级后,用户密码加密插件影响连接建立问题,可以采取以下两种方案

**方案一:**替换原有默认密码加密插件,更换为历史版本使用的加密插件(mysql_native_passwordl) 运维职责

方法一:创建用户过程修改加密插件信息

image-20240610235314356

方法二:修改已经创建用户加密插件信息

image-20240610235530810

方法三:修改数据库服务配置文件信息(全局修改)

# 修改数据库服务配置文件信息,在mysqld中区域进行修改
[root@xiaoQ-01 ~]# vim /etc/my.cnf
[mysqld]
default_authentication_plugin=mysql_native_password

# 修改数据库服务配置后重启服务程序
[root@xiaoQ-01 ~]# service mysqld restart
Shutting down MySQL. SUCCESS! 
Starting MySQL. SUCCESS! 

# 登录数据库服务查看加密插件默认配置:
mysql> show variables like '%authen%';
+--------------------------------+-----------------------+
| Variable_name                  | Value                 |
+--------------------------------+-----------------------+
| default_authentication_plugin  | mysql_native_password |
+-----------------------------  -+-----------------------+
1 row in set (0.01 sec)

**方案二:**替换客户端连接数据库服务端的驱动程序软件,使之兼容新版本加密插件功能 开发职责

查询当前登录用户信息

image-20240610214040187

授权用户权限

# 5.7版本之前的
mysql> grant all on *.* to candidate@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

# 5.7版本之后(8.0)由于是InnoDB管理,需要先建立用户再进行授权,并且grant命令不再支持indentified by
mysql> create user candidate@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on *.* to candidate@'%;
Query OK, 0 rows affected (0.00 sec)

查看指定用户权限

image-20240610234121666

查看当前用户权限

image-20240610234204440

修改用户密码

mysql> alter user zzp@'192.168.126.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

注意:用户名称和白名单要对应,否则修改失败

删除用户信息

注意:在生产环境慎用,不用的用户信息可以先锁定

# drop
mysql> drop user 'zzp'@'192.168.126.%';
Query OK, 0 rows affected (0.00 sec)

# delete 用delete危险,有可能全部删除
mysql> delete from mysql.user where user='zzp' and host='192.168.126.%';
Query OK, 1 row affected (0.00 sec)

注意:执行完删除用户后需要flush privileges;

锁定用户/解锁用户

锁定用户

mysql> alter user zzp@'192.168.126.%' account lock;
Query OK, 0 rows affected (0.00 sec)

查看数据库用户锁定状态

image-20240610222931286

使用该用户登录数据库,显示指定用户已经被指定

image-20240610232800074

解锁用户

mysql> alter user zzp@'%' account unlock;
Query OK, 0 rows affected (0.00 sec)

查看数据库用户锁定状态

image-20240610233106208