iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >译文 | MySQL 8.0 密码管理策略(一)
  • 663
分享到

译文 | MySQL 8.0 密码管理策略(一)

译文|MySQL8.0密码管理策略(一) 2019-02-21 20:02:09 663人浏览 才女
摘要

作者:Sri SaktHivel 原文链接:https://www.percona.com/blog/enhanced-passWord-management-systems-in-Mysql-8-part-1 mysql 8.0 在

译文 | MySQL 8.0 密码管理策略(一)

作者:Sri SaktHivel

原文链接:https://www.percona.com/blog/enhanced-passWord-management-systems-in-Mysql-8-part-1

mysql 8.0 在密码管理方面有很多改善,本文将介绍以下两个特性。

  • 密码重用策略
  • 生成随机密码

| 1 密码重用策略

该策略简单说,就是设置新密码时,可以限制禁止使用曾经用过的密码。有以下两种策略:

  • 历史密码 password_history
  • 间隔时间 password_reuse_interval

1.1 历史密码

Mysql 官方手册描述:

If an account is restricted on the basis of number of password changes, a new password cannot be chosen from a specified number of the most recent passwords.

在实验环境中,创建用户并添加条件password history 2,历史密码中最近的两个不能被重新使用。

mysql> create user "herc"@"localhost" identified by "Percona@321" password history 2;
Query OK, 0 rows affected (0.02 sec)

mysql> select user, host, password_reuse_history from mysql.user where user="herc"G
*************************** 1. row ***************************
                  user: herc
                  host: localhost
password_reuse_history: 2
1 row in set (0.00 sec)

MySQL 将在 mysql.password_history 表上记录密码更改的信息。

mysql> select * from mysql.password_history;
+-----------+------+----------------------------+------------------------------------------------------------------------+
| Host      | User | Password_timestamp         | Password                                                               |
+-----------+------+----------------------------+------------------------------------------------------------------------+
| localhost | herc | 2021-09-20 15:44:42.295778 | $A$005$=R:q"M(Kh#D];c~SdCLyluq2UVHFobjWOFTwn2JYVFDyI042sl56B7DCPSK5 |
+-----------+------+----------------------------+------------------------------------------------------------------------+
1 row in set (0.00 sec)

接下来我们尝试更改用户 herc@localhost 的密码。

mysql> alter user "herc"@"localhost" identified by "MySQL@321";
Query OK, 0 rows affected (0.02 sec)

mysql> select * from mysql.password_historyG
*************************** 1. row ***************************
              Host: localhost
              User: herc
Password_timestamp: 2021-09-20 15:49:15.459018
CGeRQt31UUwtw194KOKGdNbgj3558VUB.dxcoS8r4IKpG8
*************************** 2. row ***************************
              Host: localhost
              User: herc
Password_timestamp: 2021-09-20 15:44:42.295778
          Password: $A$005$=R:q"M(Kh#D];c~SdCLyluq2UVHFobjWOFTwn2JYVFDyI042sl56B7DCPSK5
2 rows in set (0.00 sec)

更改成功后,查看 mysql.password_history 表,可见该表存有最近两个密码的信息。

再次更改该用户密码,且密码为创建用户时设置的密码值(Percona@321)。

mysql> alter user "herc"@"localhost" identified by "Percona@321";
ERROR 3638 (HY000): Cannot use these credentials for "herc@localhost" because they contradict the password history policy

修改失败! 因为根据我们设置的限制策略,不能重用在 mysql.password_policy 表中被记录的最近的两个密码。因此,如果想再次重复使用第一个密码,就不能让该密码出现在 mysql.password_policy 表中。

再设置一个新密码后(第一个密码已经不是最近的两个密码了),再尝试用第一个密码值(Percona@321)进行修改,修改成功!

mysql> alter user "herc"@"localhost" identified by "Herc@321";
Query OK, 0 rows affected (0.01 sec)

mysql> alter user "herc"@"localhost" identified by "Percona@321";
Query OK, 0 rows affected (0.02 sec)

也可以在启动时在全局配置 password_history

#vi my.cnf
[mysqld]
password_history=6

#set global
mysql> set global password_history=5;
Query OK, 0 rows affected (0.00 sec)

1.2 间隔时间

MySQL 官方手册描述:

If an account is restricted based on time elapsed, a new password cannot be chosen from passwords in the history that are newer than a specified number of days.

测试前,创建了用户 sri@localhost,并设置用户密码可重用的时间间隔为五天。

mysql> create user "sri"@"localhost" identified by "Percona@321" password reuse interval 5 day;
Query OK, 0 rows affected (0.01 sec)

mysql> select user, host, password_reuse_time from mysql.user where user="sri"G
*************************** 1. row ***************************
               user: sri
               host: localhost
password_reuse_time: 5
1 row in set (0.00 sec)

这意味着每个密码生效后,在五天内都不能再被重复设置。

mysql> select * from mysql.password_history where user="sri"G
*************************** 1. row ***************************
              Host: localhost
              User: sri
Password_timestamp: 2021-09-20 16:09:27.918585
          Password: $A$005$+B   e3!C9&8m
                                         eFRG~IqRWX4b6PtzLA8I4VsdYvWU3qRs/nip/QRhXXR5phT6
1 row in set (0.00 sec)

执行 ALTER 来更改密码。

mysql> alter user "sri"@"localhost" identified by "Herc@321";
Query OK, 0 rows affected (0.02 sec)

mysql> select * from mysql.password_history where user="sri"G
*************************** 1. row ***************************
              Host: localhost
              User: sri
Password_timestamp: 2021-09-20 16:17:51.840483
          Password: $A$005$~k7qp8.OP=^#e79qwtiYd7/cmCFLvHM7MHFbvfX2WlhXqzjmrN03gGZ4
*************************** 2. row ***************************
              Host: localhost
              User: sri
Password_timestamp: 2021-09-20 16:09:27.918585
          Password: $A$005$+B   e3!C9&8m
                                         eFRG~IqRWX4b6PtzLA8I4VsdYvWU3qRs/nip/QRhXXR5phT6
2 rows in set (0.00 sec)

现在尝试再次设置为第一个密码。

mysql> alter user "sri"@"localhost" identified by "Percona@321";
ERROR 3638 (HY000): Cannot use these credentials for "sri@localhost" because they contradict the password history policy

设置失败!

也可以在启动时在全局配置 password_reuse_interval

#vi my.cnf
[mysqld]
password_reuse_interval=365

#set global
mysql> set global password_reuse_interval=365;
Query OK, 0 rows affected (0.00 sec)

| 2 随机密码

从 MySQL 8.0.18 开始,MySQL 能够为用户帐户创建随机密码。这意味着可以不必分配指定密码。它支持以下语句:

  • 创建用户
  • 更改用户
  • 设置密码

我们需要使用 RANDOM PASSWORD 以避免修改密码时屏幕上有明文显示。例如:

mysql> create user "sakthi"@"localhost" identified by random password;
+--------+-----------+----------------------+
| user   | host      | generated password   |
+--------+-----------+----------------------+
| sakthi | localhost | .vZYy+< alter user "sri"@"localhost" identified by random password;
+------+-----------+----------------------+
| user | host      | generated password   |
+------+-----------+----------------------+
| sri  | localhost | 5wb>2[]q*jbDsFvlN-i_ |
+------+-----------+----------------------+
1 row in set (0.02 sec)

密码哈希值将存储在 mysql.user 表中。

mysql> select user, authentication_string from mysql.user where user in ("sakthi","sri")G
*************************** 1. row ***************************
                 user: sakthi
authentication_string: $A$005$L`PYcedj%3tz*J>ioBP1.Rsrj7H8wtelqijvV0CFnXVnWLNIc/RZL0C06l4oA
*************************** 2. row ***************************
                 user: sri
authentication_string: $A$005$/k?aO&ap.#b=
                                          ^zt[E|x9q3w9uHn1oEumXUgnqNMH8xWo4xd/s26hTPKs1AbC2
2 rows in set (0.00 sec)

默认情况下,密码长度为 20 个字符。我们可以使用变量 generated_random_password_length 定义密码长度,允许的长度范围是 5 到 255。

mysql> select @@generated_random_password_length;
+------------------------------------+
| @@generated_random_password_length |
+------------------------------------+
|                                 20 |
+------------------------------------+
1 row in set (0.00 sec)

如果 validate_password 组件已经安装,对随机密码策略不会有影响。

还有一些特性,将在下一篇文章中介绍。

参考

MySQL 手册:

  • Https://dev.mysql.com/doc/mysql-security-excerpt/8.0/en/password-management.html

  • https://dev.mysql.com/doc/refman/8.0/en/password-management.html#random-password-generation

您可能感兴趣的文档:

--结束END--

本文标题: 译文 | MySQL 8.0 密码管理策略(一)

本文链接: https://www.lsjlt.com/news/8804.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL 8.0 密码策略修改
    首次登录mysql,需要修改原始密码。 mysql> show databases;ERROR 1820 (HY000): You must reset your password using ALT...
    99+
    2023-09-12
    mysql
  • MySQL的密码策略
    文章目录 一、配置远程主机可登录mysql数据库二、MySQL的密码复杂度5.7的密码复杂度是由validate_password_policy参数控制8.0的密码复杂度是由validate_...
    99+
    2023-09-04
    mysql 数据库
  • MySQL密码策略有哪些
    本篇内容介绍了“MySQL密码策略有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1)  临...
    99+
    2024-04-02
  • 阿里云ECS服务器系统密码管理策略
    阿里云ECS服务器是一种弹性计算服务,用户可以通过互联网随时随地访问和使用服务器资源。然而,由于服务器的安全性,用户需要定期更改系统密码。本文将详细说明阿里云ECS服务器系统密码的管理策略。 设置系统密码在创建阿里云ECS服务器时,系统会默...
    99+
    2023-11-12
    阿里 策略 密码
  • MySQL 5.7密码安全策略是什么
    小编给大家分享一下MySQL 5.7密码安全策略是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!查看现有的密码策略mysql> SHOW VARIABLES LIKE '...
    99+
    2024-04-02
  • 阿里云服务器登录的密码策略与管理
    阿里云服务器作为企业的重要基础设施,其安全性一直是企业关注的重点。然而,安全问题并不只是服务器的安全性问题,还包括用户的身份验证和密码管理问题。本文将详细探讨阿里云服务器登录的密码策略以及管理方式。 首先,阿里云服务器登录的密码策略是严格和...
    99+
    2023-12-16
    阿里 策略 密码
  • 阿里云服务器密码管理的重要性与策略
    阿里云服务器是一种常用的云计算服务,为企业和个人提供了强大的计算和存储能力。在使用阿里云服务器时,为了保障服务器的安全性,通常需要设置多个密码。本文将探讨阿里云服务器密码管理的重要性,并提供一些密码管理的策略。密码管理的重要性阿里云服务器...
    99+
    2024-01-17
    阿里 重要性 策略
  • 阿里云ECS服务器登陆账号密码管理策略
    随着云计算技术的飞速发展,越来越多的企业和个人开始使用阿里云ECS服务器进行计算和存储需求。然而,如何安全、有效地管理阿里云ECS服务器的登陆账号密码,成为了每个用户都必须面对的问题。本文将详细讲解阿里云ECS服务器的登陆账号密码管理策略。...
    99+
    2023-11-15
    阿里 账号 策略
  • MySQL中ibd文件的存储机制和管理策略
    MySQL中ibd文件的存储机制和管理策略 MySQL是一种常用的关系型数据库管理系统,广泛应用于各个领域的数据管理中。在MySQL中,数据表的数据和索引是以不同的方式进行存储的,其中...
    99+
    2024-04-02
  • 阿里云远程服务器登录密码的管理策略
    阿里云远程服务器是一种云计算服务,它允许用户在互联网上使用远程服务器来运行应用程序。然而,远程服务器的登录密码是一个重要的安全问题,因为如果密码被泄露,可能会导致数据丢失或被非法访问。因此,阿里云为用户提供了一系列的管理策略,以保护用户的登...
    99+
    2023-11-23
    阿里 策略 密码
  • 一键安装mysql5.7及密码策略修改方法
    一、一键安装Mysql脚本 [root@uat01 ~]# cat InstallMysql01.sh #!/bin/bash #2018-10-13 #旅行者-Travel #1.安装wget yu...
    99+
    2024-04-02
  • PHP Git 实战:代码管理与协作中的权限管理策略?
    答案: php git 的权限管理策略确保代码的安全性和协作效率。详细描述:定义等级:所有者、维护者、贡献者、读者设置权限命令:所有者:git add-user username --a...
    99+
    2024-05-13
    php git
  • 学校管理系统的MySQL表结构设计策略
    学校管理系统的MySQL表结构设计策略目前,随着信息技术的飞速发展,学校管理系统已经成为现代学校管理的必要工具。MySQL作为一种常用的关系型数据库管理系统,在学校管理系统的开发中具有重要的地位。本文将探讨学校管理系统中MySQL表结构的设...
    99+
    2023-10-31
    MySQL 学校管理系统 表结构设计策略
  • 等保三级安全加固,服务器三权分立设置,mysql密码策略登录策略
    安全计算环境 1)数据库、服务器未配置口令复杂度策略。 OS 系统编辑文件/etc/pam.d/system-auth,是否存在如下配置: password requisite ...
    99+
    2023-09-07
    mysql 服务器 安全 运维 linux
  • Vue 状态管理策略:从单一状态树到分布式状态管理
    1. Vuex:单一状态树 Vuex 是 Vue 官方推荐的状态管理库,它采用单一状态树的模式,将所有状态集中管理在一个对象中。这使得状态更容易追踪和修改,提高了代码的可维护性。 // store.js import Vuex from...
    99+
    2024-02-24
    Vue 状态管理 Vuex Pinia 状态共享 状态隔离 状态持久化
  • 怎样进行MYSQL密码管理
    怎样进行MYSQL密码管理,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 ERROR 1045 (28000):...
    99+
    2024-04-02
  • MySQL如何进行密码管理
    这篇文章主要介绍了MySQL如何进行密码管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 1. mysql安装后默认没有密码,初始化安装...
    99+
    2024-04-02
  • 管理(005):密码文件设置
    一、更改数据库密码文件名或位置 如果更改数据库密码文件名或位置,请运行以下命令使更改生效: ALTER SYSTEM FLUSH PASSWORDFILE_METAD...
    99+
    2024-04-02
  • 工程项目系统管理一种关键的成功策略
    在工程项目中,系统管理是一种重要的策略,它可以帮助项目经理和团队成员有效地协调和控制项目进程,确保项目的成功完成。本篇文章将详细介绍工程项目系统管理的各个方面,包括其定义、重要性、目标、过程和方法。 一、定义工程项目系统管理是一种通过规划、...
    99+
    2023-12-12
    工程项目 策略 关键
  • PHP MVC架构项目代码组织及管理策略揭秘
    1. 文件结构 一个合理的PHP MVC架构项目文件结构可以帮助开发者轻松查找和管理项目中的文件,使项目更加井井有条。以下是一个常用的文件结构示例: ├── app │ ├── controllers │ │ ├── Hom...
    99+
    2024-02-05
    PHP MVC 代码组织 代码管理 项目结构 命名约定 版本控制
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作