在数据库服务中,也是有用户知识概念的,类似系统中的用户管理应用,主要利用用户管理知识,可以实现:
-
用户登录数据库服务系统中(实现数据库服务登录)
-
用户管理数据库服务中对象(实现数据库对象管理)
数据库用户创建:'用户名称'@'白名单信息'
白名单信息:网段IP信息或者名称信息
创建用户
MySQL> create user zzp@'192.168.126.%' identified by '123456';
查询用户信息

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) 运维职责
方法一:创建用户过程修改加密插件信息

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

方法三:修改数据库服务配置文件信息(全局修改)
# 修改数据库服务配置文件信息,在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)
**方案二:**替换客户端连接数据库服务端的驱动程序软件,使之兼容新版本加密插件功能 开发职责
查询当前登录用户信息

授权用户权限
# 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)
查看指定用户权限

查看当前用户权限

修改用户密码
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)
查看数据库用户锁定状态

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

解锁用户
mysql> alter user zzp@'%' account unlock;
Query OK, 0 rows affected (0.00 sec)
查看数据库用户锁定状态
