MySQL-用户管理

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

1、登录MySQL服务器

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

[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、创建用户

  • 查看默认用户信息
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 '密码';
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 相关条件;如:
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
mysql> flush privileges;
Query OK, 0 rows affected (0.33 sec)

4、删除用户

  • 方式1:使用 drop user 的方式 (推荐) 语法为 :drop user '用户名'@'hostname/hostIP'
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
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 '密码';,如:
mysql> alter user user() identified by 'rqtanc';
Query OK, 0 rows affected (0.00 sec)
  • 方式二: 使用 set 语句来修改当前用户, 语法 : set password = password('密码');
mysql> set password = '123456';
Query OK, 0 rows affected (0.00 sec)

6、设置其他用户密码

  • 方式一: 使用 alter user 语句来修改普通用户密码, 语法为:alter user '用户名'@'hostname/hostIP' identified by '密码' ; 如:
mysql> alter user 'rqtanc' identified by 'rqtanc1';
Query OK, 0 rows affected (0.04 sec)
  • 方式二:使用 set 方式修改普通用户密码,语法为 :set password for '用户'@'hostname/hostIP' = '密码'; 如:
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 = '用户' 如:
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; 如:
mysql> alter user 'rqtanc' password expire;
Query OK, 0 rows affected (0.34 sec)
  • 手动设置指定时间过期方式
    Ⅰ、全局设置 : 如果密码使用的时间大于允许时间,自动设置为过期,无需手动设置, 使用 default_password_lifetime系统变量建立全局密码过期策略
    ①默认值为: 0 ,表示禁用自动密码过期
    ②允许的值是正整数N,表示允许密码生存期。密码必须每隔N天进行修改
    ③使用 sql 语句更改变量并实现持久化,如:
set default_password_lifetime = 180 ; 

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

[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 文件
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值