MySQL-用户管理

  • MySQL 用户分为 普通用户root用户。root用户即超级管理员,拥有所有权限,包含创建,删除和修改用户等相关权限;普通用户只拥有被root用户授予的各种权限
  • MySQL的安全性需要通过账户管理来实现

1、登录MySQL服务器

命令如下:mysql -h hostname|hostIP -P 端口号 -u 用户 -p 密码 数据库名称 -e "sql语句" ;示例如下:

powershell 复制代码
[root@localhost ~]# mysql -h localhost -P 3306 -uroot -p123456 rqtanc -e "show create table rqtanc_test";
mysql: [Warning] Using a password on the command line interface can be insecure.
+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table       | Create Table                                                                                                                                               |
+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
| rqtanc_test | CREATE TABLE `rqtanc_test` (
  `id` int DEFAULT NULL,
  `name` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+

2、创建用户

  • 查看默认用户信息
powershell 复制代码
mysql> select host , user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
+-----------+------------------+
4 rows in set (0.01 sec)
  • 创建用户说明:
    ①使用 create user 语句来创建新用户
    ②必须要有 create user 权限
    ③新创建的用户没有任何权限
    ④基本语法为: create user '用户名'@'hostName/hostIP' identified by '密码';
powershell 复制代码
mysql> create user 'rqtanc1'@'192.168.%' identified by 'rqtanc1';
Query OK, 0 rows affected (1.38 sec)
mysql> create user rqtanc identified by 'rqtanc';
Query OK, 0 rows affected (3.98 sec)

3、修改用户

  • 基本语法为:update user set 字段名 = 字段值 where 相关条件;如:
powershell 复制代码
mysql> update user set host = '192.168.%' where user = 'rqtanc1';
Query OK, 1 row affected (2.37 sec)
Rows matched: 1  Changed: 1  Warnings: 0
  • 修改后刷新用户权限:flush privileges
powershell 复制代码
mysql> flush privileges;
Query OK, 0 rows affected (0.33 sec)

4、删除用户

  • 方式1:使用 drop user 的方式 (推荐) 语法为 :drop user '用户名'@'hostname/hostIP'
powershell 复制代码
mysql> drop user 'rqtanc1'@'192.168.%';
Query OK, 0 rows affected (1.86 sec)
  • 方式2: 使用delete 语句,语法格式为: delete from user where host = 'hostname/hostIP' and user = '用户名'; ,删除后 刷新权限 flush privileges
powershell 复制代码
mysql> delete from user where host = '%' and user = 'rqtanc';
Query OK, 1 row affected (0.66 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.49 sec)
  • 使用delete 语句删除用户数据,会存在残留信息,如用户的权限信息,不推荐使用delete 语句方式

5、设置当前用户密码

  • 方式一: 使用 alter user 命令修改当前用户,语法 : alter user user() identified by '密码';,如:
powershell 复制代码
mysql> alter user user() identified by 'rqtanc';
Query OK, 0 rows affected (0.00 sec)
  • 方式二: 使用 set 语句来修改当前用户, 语法 : set password = password('密码');
powershell 复制代码
mysql> set password = '123456';
Query OK, 0 rows affected (0.00 sec)

6、设置其他用户密码

  • 方式一: 使用 alter user 语句来修改普通用户密码, 语法为:alter user '用户名'@'hostname/hostIP' identified by '密码' ; 如:
powershell 复制代码
mysql> alter user 'rqtanc' identified by 'rqtanc1';
Query OK, 0 rows affected (0.04 sec)
  • 方式二:使用 set 方式修改普通用户密码,语法为 :set password for '用户'@'hostname/hostIP' = '密码'; 如:
powershell 复制代码
mysql> set password for 'rqtanc'@'%' = 'rqtanc';
Query OK, 0 rows affected (0.10 sec)
  • 方式三: 使用 update 语句来修改用户(不推荐) 语法为: update user set authentication_string = password('密码') where host = 'hostname/hostIP' and user = '用户' 如:
powershell 复制代码
mysql> update user set authentication_string = password('rqtanc') where host ='%' and user = 'rqtanc';
Query OK, 0 rows affected, 1 warning (0.64 sec)
Rows matched: 1  Changed: 0  Warnings: 1

更新后,刷新权限 flush privileges

7、MySQL 8.0 密码管理

7.1、密码过期策略

  • 手动设置立马过期,语法: alter user '用户' password expire; 如:
powershell 复制代码
mysql> alter user 'rqtanc' password expire;
Query OK, 0 rows affected (0.34 sec)
  • 手动设置指定时间过期方式
    Ⅰ、全局设置 : 如果密码使用的时间大于允许时间,自动设置为过期,无需手动设置, 使用 default_password_lifetime系统变量建立全局密码过期策略
    ①默认值为: 0 ,表示禁用自动密码过期
    ②允许的值是正整数N,表示允许密码生存期。密码必须每隔N天进行修改
    ③使用 sql 语句更改变量并实现持久化,如:
powershell 复制代码
set default_password_lifetime = 180 ; 

④在配置文件中进行维护,如:

powershell 复制代码
[root@rqtanc ~]# vim /etc/my.cnf

#添加以下信息
default_password_lifetime = 180

Ⅱ、单独设置:即在 create user 或 alter user 语句加上 password expire Npassword expire never(永不过期) 或 password expire default(沿用全局密码过期策略)

7.2、密码重用策略

  • 基于 密码更改的次数使用时间
  • 可以是全局的为某个账号单独提供
  • 通过以下规则限制密码重用:
    ①基于密码修改次数,则新密码不能从最近几次修改中选择
    ②基于使用时间,则新密码不能从规定时间内选择
  • 使用 password_historypassword_reuse_interval 设置系统变量设置密码重用策略
    set persist password_history = 正整数set persist password_reuse_interval = 时长(天)
    ②配置 my.cnf 文件
相关推荐
Lojarro21 分钟前
【Spring】Spring框架之-AOP
java·mysql·spring
TianyaOAO40 分钟前
mysql的事务控制和数据库的备份和恢复
数据库·mysql
Ewen Seong1 小时前
mysql系列5—Innodb的缓存
数据库·mysql·缓存
W21552 小时前
Liunx下MySQL:表的约束
数据库·mysql
nbsaas-boot4 小时前
探索 JSON 数据在关系型数据库中的应用:MySQL 与 SQL Server 的对比
数据库·mysql·json
奥顺4 小时前
PHPUnit使用指南:编写高效的单元测试
大数据·mysql·开源·php
苹果醋36 小时前
SpringBoot快速入门
java·运维·spring boot·mysql·nginx
ROCKY_8176 小时前
Mysql复习(一)
数据库·mysql
Smile丶凉轩6 小时前
MySQL库的操作
数据库·mysql·oracle
CodeChampion6 小时前
60.基于SSM的个人网站的设计与实现(项目 + 论文)
java·vue.js·mysql·spring·elementui·node.js·mybatis