禁止mysql命令行历史记录;_MySQL账户密码原来还有这么多功能

9bd13f78576654d8922e7fce96647313.png
  • 创建账户
  • 更改密码
  • 直接更改当前账户(非匿名)
  • 命令行更改帐户密码
  • 复制用户密码限制
  • 密码过期
  • 密码过期策略
  • 要求每90天更改一次密码
  • 禁用密码有效期
  • 密码重用限制【8.0】
  • 密码修改验证【8.0.13】
  • 支持双密码【8.0.14】
  • 生成随机密码【8.0.18】
  • 登录失败跟踪和临时帐户锁定【8.0.19】
  • 设置账户资源限制

账户密码管理

创建账户

CREATE  USER  'jeffrey'@'localhost'  IDENTIFIED  BY  '_password_';

更改密码

ALTER  USER  'jeffrey'@'localhost'  IDENTIFIED  BY  '_password_';

直接更改当前账户(非匿名)

ALTER  USER  USER()  IDENTIFIED  BY  '_password_';

命令行更改帐户密码

mysqladmin 
使用mysqladmin设置密码应该被认为是不安全的。

复制用户密码限制

使用MySQL复制,需要注意 CHANGE MASTER TO 语句限制 32 个字符;如果密码太长会被截断。

密码过期

# 手动使帐户密码失效

ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE;

密码过期策略

default_password_lifetime = 180

默认为 0 ,永不过期

要求每90天更改一次密码

CREATE  USER  'jeffrey'@'localhost'  PASSWORD  EXPIRE  INTERVAL  90 DAY; 
ALTER  USER  'jeffrey'@'localhost'  PASSWORD  EXPIRE  INTERVAL  90 DAY;

禁用密码有效期

CREATE  USER  'jeffrey'@'localhost'  PASSWORD  EXPIRE  NEVER;
ALTER  USER  'jeffrey'@'localhost'  PASSWORD  EXPIRE  NEVER;

密码重用限制【8.0】

  • 要禁止重复使用最近6个密码或365天以内的密码,请在服务器my.cnf文件中添加以下行 :
[mysqld]
password_history=6
password_reuse_interval=365
或
SET GLOBAL password_history = 6;
SET GLOBAL password_reuse_interval = 365;
  • 在允许重复使用之前,至少需要更改5次密码:
CREATE  USER  'jeffrey'@'localhost'  PASSWORD  HISTORY  5;
ALTER  USER  'jeffrey'@'localhost'  PASSWORD  HISTORY  5;
  • 要将两种类型的重用限制结合使用
CREATE  USER  'jeffrey'@'localhost'  PASSWORD  HISTORY  5  PASSWORD  REUSE  INTERVAL  365 DAY;
ALTER  USER  'jeffrey'@'localhost'  PASSWORD  HISTORY  5  PASSWORD  REUSE  INTERVAL  365 DAY;

密码修改验证【8.0.13】

可以设置在当前用户修改自己密码时候需要输入原密码,由参数 `password_require_current` 控制,默认不需要

# 修改方式
ALTER  USER  USER()  IDENTIFIED  BY  '_auth_string_'  REPLACE  '_current_auth_string_';
ALTER  USER  'jeffrey'@'localhost'  IDENTIFIED  BY  '_auth_string_'  REPLACE  '_current_auth_string_';

支持双密码【8.0.14】

从MySQL 8.0.14开始,允许用户帐户具有双重密码,分别指定为主要和次要密码。

可以无缝的进行更改密码,而不用停止应用。

示例:

1.在主上修改帐号的密码,设置新密码

ALTER  USER  'appuser1'@'host1.example.com'  IDENTIFIED  BY  '_password_b_'  RETAIN  CURRENT  PASSWORD;

2.等待密码复制到从库

3.修改应用程序的密码,使用新的密码进行连接

4.删除旧密码

ALTER  USER  'appuser1'@'host1.example.com'  DISCARD  OLD  PASSWORD;
RETAIN CURRENT PASSWORD : 保留帐户的当前密码作为其辅助密码。客户端使用新旧密码都可以连接。`如果使用 alter user 或 set password 设置新密码为空,则旧密码也会变为空`
设置辅助密码需要权限 `APPLICATION_PASSWORD_ADMIN`

生成随机密码【8.0.18】

mysql> CREATE USER 'y1'@'localhost' IDENTIFIED BY RANDOM PASSWORD,'y2'@'%' IDENTIFIED BY RANDOM PASSWORD;
+------+-----------+----------------------+
| user | host      | generated password   |
+------+-----------+----------------------+
| y1   | localhost | :ir5:D]*cbi}V3aP68/r |
| y2   | %         | i2Zi/T+HpEw%MK:j{E5r |
+------+-----------+----------------------+
2 rows in set (0.01 sec)

# 修改为随机密码
mysql>  ALTER  USER  'y1'@'localhost'  IDENTIFIED  BY  RANDOM  PASSWORD,  'y2'@'%' IDENTIFIED  BY  RANDOM  PASSWORD;
生成的密码长度默认为 20 ,长度由参数 `generated_random_password_length`控制[5 - 255]

登录失败跟踪和临时帐户锁定【8.0.19】

对账户设置登陆失败次数和锁定时间

CREATE  USER  'u1'@'localhost'  IDENTIFIED  BY  '_password_'  FAILED_LOGIN_ATTEMPTS  3  PASSWORD_LOCK_TIME  3;

设置账户资源限制

可以对账户进行如下限制:

  • 帐户每小时可发出的查询数量
  • 帐户每小时可以发布的更新次数
  • 帐户每小时可以连接到服务器的次数
  • 帐户同时连接到服务器的数量
# 设置资源限制
CREATE USER 'francis'@'localhost' IDENTIFIED BY 'frank'
WITH MAX_QUERIES_PER_HOUR 20
MAX_UPDATES_PER_HOUR 10
MAX_CONNECTIONS_PER_HOUR 5
MAX_USER_CONNECTIONS 2;

# 修改
mysql>  ALTER  USER  'francis'@'localhost'  WITH  MAX_QUERIES_PER_HOUR  100;

# 删除限制
mysql>  ALTER  USER  'francis'@'localhost'  WITH  MAX_CONNECTIONS_PER_HOUR  0;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值