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 文件
相关推荐
灯澜忆梦1 小时前
【MySQL1】| DDL 数据定义语言
数据库·sql·mysql
七夜zippoe3 小时前
OpenClaw 数据加密:敏感信息保护的完整方案
数据库·mysql·php·openclaw·敏感保护
万亿少女的梦1683 小时前
基于Node.js和Express的旅游信息管理平台设计与开发
mysql·node.js·express·系统设计·旅游信息管理
万亿少女的梦16814 小时前
基于Python的高考志愿填报辅助系统设计与实现
java·spring boot·python·mysql·vue
万亿少女的梦16814 小时前
基于SpringBoot与Vue的历史博物馆展品展示与游客管理系统设计
spring boot·mysql·vue·系统设计·博物馆管理系统
灯澜忆梦16 小时前
MySQL 完整学习路线
学习·mysql
ClouGence17 小时前
保障公共安全,一线治安机构实时数据应用与实践
数据库·mysql·postgresql
Minxinbb17 小时前
TDSQL for MySQL 服务器重启操作
数据库·mysql·dba
渣渣灰飞18 小时前
MySQL 系统学习 第二阶段 第三章 DQL(Data Query Language)第三节:ORDER BY + LIMIT(排序 + 分页)
数据库·学习·mysql
fengbingchun20 小时前
客户端获取服务器端MySQL数据库表中数据C++实现
mysql