我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何设置安全的数据库密码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何设置安全的数据库密码

本篇内容介绍了“如何设置安全的数据库密码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.密码复杂度策略设置

MySQL 系统自带有 validate_password 插件,此插件可以验证密码强度,未达到规定强度的密码则不允许被设置。MySQL 5.7 及  8.0 版本默认情况下貌似都不启用该插件,这也使得我们可以随意设置密码,比如设置为  123、123456等。如果我们想从根源上规范密码强度,可以启用该插件,下面一起来看下如何通过此插件来设置密码复杂度策略。

1)查看是否已安装此插件

进入 MySQL 命令行,通过 show plugins 或者查看 validate_password  相关参数可以判断是否已安装此插件。若没有相关参数则代表未安装此插件

# 安装前检查 为空则说明未安装此插件 mysql> show variables like 'validate%'; Empty set (0.00 sec)

2)安装 validate_password 插件

# 通过 INSTALL PLUGIN 命令可安装此插件 # 每个平台的文件名后缀都不同 对于 Unix 和类 Unix 系统,为.so,对于 Windows 为.dll mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so'; Query OK, 0 rows affected, 1 warning (0.28 sec)  # 查看 validate_password 相关参数 mysql> show variables like 'validate%'; +--------------------------------------+--------+ | Variable_name                        | Value  | +--------------------------------------+--------+ | validate_password_check_user_name    | ON     | | validate_password_dictionary_file    |        | | validate_password_length             | 8      | | validate_password_mixed_case_count   | 1      | | validate_password_number_count       | 1      | | validate_password_policy             | MEDIUM | | validate_password_special_char_count | 1      | +--------------------------------------+--------+ 7 rows in set (0.00 sec)

3)密码强度相关参数解释

安装 validate_password 插件后,多了一些密码强度相关参数,这些参数从字面意思上也很容易看懂,下面简单解释下几个重点参数。

1、validate_password_policy

代表的密码策略,默认是MEDIUM 可配置的值有以下:

0 or LOW 仅需需符合密码长度(由参数validate_password_length指定)

1 or MEDIUM 满足LOW策略,同时还需满足至少有1个数字,小写字母,大写字母和特殊字符

2 or STRONG 满足MEDIUM策略,同时密码不能存在字典文件(dictionary file)中

2、validate_password_dictionary_file

用于配置密码的字典文件,当validate_password_policy设置为STRONG时可以配置密码字典文件,字典文件中存在的密码不得使用。

3、validate_password_length

用来设置密码的最小长度,默认值是8

4、validate_password_mixed_case_count

当validate_password_policy设置为MEDIUM或者STRONG时,密码中至少同时拥有的小写和大写字母的数量,默认是1最小是0;默认是至少拥有一个小写和一个大写字母。

5、validate_password_number_count

当validate_password_policy设置为MEDIUM或者STRONG时,密码中至少拥有的数字的个数,默认1最小是0

6、validate_password_special_char_count

当validate_password_policy设置为MEDIUM或者STRONG时,密码中至少拥有的特殊字符的个数,默认1最小是0

4)密码复杂度策略具体设置

学习完以上参数,我们就可以根据自身情况来具体设置密码复杂度策略了,比如我想让密码至少 10 位且包含大小写字母、数字、特殊字符,则可以这样设置。

# 设置密码长度至少10位 mysql> set global validate_password_length = 10; Query OK, 0 rows affected (0.00 sec)  mysql> show variables like 'validate%';                                                                                    +--------------------------------------+--------+ | Variable_name                        | Value  | +--------------------------------------+--------+ | validate_password_check_user_name    | ON     | | validate_password_dictionary_file    |        | | validate_password_length             | 10     | | validate_password_mixed_case_count   | 1      | | validate_password_number_count       | 1      | | validate_password_policy             | MEDIUM | | validate_password_special_char_count | 1      | +--------------------------------------+--------+ 7 rows in set (0.00 sec)  # 若想永久生效,建议将以下参数写入配置文件 [mysqld] plugin-load = validate_password.so validate_password_length = 10 validate_password_policy = 1 validate-password = FORCE_PLUS_PERMANENT

5)测试密码复杂度

密码复杂度策略只对生效后的操作有效,比如说你之前有个账号,密码是 123  ,则该账号还是可以继续使用的,不过若再次更改密码则需满足复杂度策略。下面我们来测试下密码复杂度策略的具体效果。

# 新建用户设置密码 mysql> create user 'testuser'@'%' identified by '123'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements mysql> create user 'testuser'@'%' identified by 'ab123'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements mysql> create user 'testuser'@'%' identified by 'Ab@123'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements mysql> create user 'testuser'@'%' identified by 'Bsdf@5467672'; Query OK, 0 rows affected (0.01 sec)  # 更改密码 mysql> alter user 'testuser'@'%' identified by 'dfgf3435'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements mysql> alter user 'testuser'@'%' identified by 'dBsdf@5467672'; Query OK, 0 rows affected (0.01 sec)

2.设置密码自动过期

除了设置密码复杂度策略外,我们还可以设置密码自动过期,比如说隔 90  天密码会过期必须修改密码后才能继续使用,这样我们的数据库账号就更加安全了。下面我们来看下如何设置密码自动过期。

单独设置某个账号密码过期时间

使用 ALTER USER 语句可以使单个账号密码过期,也可以更改账号过期时间。

# 通过 mysql.user 系统表查看数据库账号状态 mysql> select user,host,password_expired,password_lifetime,password_last_changed,account_locked from mysql.user; +------------------+-----------+------------------+-------------------+-----------------------+----------------+ | user             | host      | password_expired | password_lifetime | password_last_changed | account_locked | +------------------+-----------+------------------+-------------------+-----------------------+----------------+ | expuser          | %         | N                |              NULL | 2021-01-05 14:30:30   | N              | | root             | %         | N                |              NULL | 2020-10-30 14:45:43   | N              | | testuser         | %         | N                |              NULL | 2021-01-04 17:22:37   | N              | | mysql.infoschema | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | | mysql.session    | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | | mysql.sys        | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | | root             | localhost | N                |              NULL | 2020-10-30 14:38:55   | N              | +------------------+-----------+------------------+-------------------+-----------------------+----------------+ 7 rows in set (0.01 sec)  # 使 expuser 账号密码立即过期 mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE; Query OK, 0 rows affected (0.00 sec)  mysql> select user,host,password_expired,password_lifetime,password_last_changed,account_locked from mysql.user; +------------------+-----------+------------------+-------------------+-----------------------+----------------+ | user             | host      | password_expired | password_lifetime | password_last_changed | account_locked | +------------------+-----------+------------------+-------------------+-----------------------+----------------+ | expuser          | %         | Y                |              NULL | 2021-01-05 14:30:30   | N              | | root             | %         | N                |              NULL | 2020-10-30 14:45:43   | N              | | testuser         | %         | N                |              NULL | 2021-01-04 17:22:37   | N              | | mysql.infoschema | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | | mysql.session    | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | | mysql.sys        | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | | root             | localhost | N                |              NULL | 2020-10-30 14:38:55   | N              | +------------------+-----------+------------------+-------------------+-----------------------+----------------+ 7 rows in set (0.00 sec)  # 修改账号密码永不过期 mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE NEVER; Query OK, 0 rows affected (0.01 sec)  # 单独设置该账号密码90天过期 mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE INTERVAL 90 DAY; Query OK, 0 rows affected (0.00 sec)  mysql> select user,host,password_expired,password_lifetime,password_last_changed,account_locked from mysql.user; +------------------+-----------+------------------+-------------------+-----------------------+----------------+ | user             | host      | password_expired | password_lifetime | password_last_changed | account_locked | +------------------+-----------+------------------+-------------------+-----------------------+----------------+ | expuser          | %         | N                |                90 | 2021-01-05 14:41:28   | N              | | root             | %         | N                |              NULL | 2020-10-30 14:45:43   | N              | | testuser         | %         | N                |              NULL | 2021-01-04 17:22:37   | N              | | mysql.infoschema | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | | mysql.session    | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | | mysql.sys        | localhost | N                |              NULL | 2020-10-30 14:37:09   | Y              | | root             | localhost | N                |              NULL | 2020-10-30 14:38:55   | N              | +------------------+-----------+------------------+-------------------+-----------------------+----------------+ 7 rows in set (0.00 sec)  # 让此账号使用默认的密码过期全局策略 mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE DEFAULT; Query OK, 0 rows affected (0.01 sec)

mysql.user 系统表记录着每个账号的相关信息,当 password_expired 字段值为 Y  时,代表此密码已过期,使用过期密码仍可以登录,但不能进行任何操作,进行操作会提示:ERROR 1820 (HY000): You must reset your  password using ALTER USER statement before executing this statement.  必须更改密码后才能进行正常操作。

对于给定过期时间的账号,比如说设置 90 天过期,数据库系统会比较当前时间与上次修改密码的时间差值,如果距离上次修改密码时间超过 90  天,则将此账号密码标记为过期,必须更改密码后才能进行操作。

设置全局过期策略

要构建全局密码自动过期策略,请使用 default_password_lifetime 系统变量。在 5.7.11 版本之前,默认的  default_password_lifetime 值为 360(密码大约每年必须更改一次),之后的版本默认值为  0,表示密码不会过期。此参数的单位是天,比如我们可以将此参数设置为 90 ,则表示全局密码自动过期策略是 90 天。

# 设置全局过期策略 先手动更改再加入配置文件 mysql> SET GLOBAL default_password_lifetime = 90; Query OK, 0 rows affected (0.01 sec)  mysql> show variables like 'default_password_lifetime'; +---------------------------+-------+ | Variable_name             | Value | +---------------------------+-------+ | default_password_lifetime | 90    | +---------------------------+-------+ 1 row in set (0.00 sec)  # 写入配置文件使得重启生效 [mysqld] default_password_lifetime = 90

尽管可以通过将过期的密码设置为当前值来“重置”它,但出于良好的 Policy 考虑,最好选择其他密码。

“如何设置安全的数据库密码”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何设置安全的数据库密码

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

下载Word文档

猜你喜欢

阿里云镜像数据库密码的设置与安全保护

阿里云镜像数据库是一种高可用、高性能的云数据库服务,通过设置合理的密码可以有效保障数据库的安全性。本文将介绍如何在阿里云镜像数据库中设置密码以及如何保护数据库的安全。1.设置密码:在阿里云镜像数据库中,密码是保护数据库的重要手段之一。要设置密码,首先需要登录阿里云控制台,并选择相应的实例。然后,在实例的管理页面中
阿里云镜像数据库密码的设置与安全保护
2024-01-22

如何设置云服务器数据库的密码

要设置云服务器数据库的密码,可以按照以下步骤进行操作:1. 登录到云服务器的操作系统中。2. 打开数据库管理工具,如MySQL Workbench、phpMyAdmin等。3. 连接到数据库服务器,输入正确的主机名、用户名和密码,点击连接按
2023-09-25

如何设置云服务器数据库的密码

设置云服务器数据库密码本指南将详细介绍如何设置AWS、Azure和GCP云平台上的数据库密码,以保护数据安全。本文包括选择强密码、定期更改密码和启用双因素身份验证等最佳实践建议。通过遵循这些步骤,您可以确保您的数据库受到保护并免受未经授权的访问。
如何设置云服务器数据库的密码
2024-04-09

如何设置Oracle数据库的默认账号密码?

设置Oracle数据库的默认账号密码是非常重要的,可以加强数据库的安全性。在Oracle数据库中,默认的管理员账号是SYS,有时候我们需要修改这个账号的默认密码。以下是具体的步骤和代码示例:首先,打开SQL*Plus或者其他Oracle数
如何设置Oracle数据库的默认账号密码?
2024-03-09

阿里云数据库如何设置密码登录

阿里云数据库是一种高性能、高可用、高安全的云计算服务,可以帮助企业快速搭建和管理数据库。在使用阿里云数据库时,设置密码登录是非常重要的一步。本文将介绍如何在阿里云数据库中设置密码登录。设置密码登录步骤步骤一:创建数据库实例首先,在阿里云控制台中创建一个数据库实例。选择合适的实例类型、规格和存储空间等参数,然后点击“立即
阿里云数据库如何设置密码登录
2024-01-19

如何查看阿里云数据库密码设置

如何查看阿里云数据库密码设置本文将详细介绍如何在阿里云上查看和管理数据库密码。阿里云是全球领先的云计算服务提供商,其数据库服务稳定可靠,受到广大用户的喜爱。本文将向您展示如何查看阿里云数据库密码设置,帮助您更好地管理和保护数据库安全。正文:一、登录阿里云控制台首先,我们需要登录阿里云控制台。在浏览器中输入“htt
如何查看阿里云数据库密码设置
2024-01-25

如何设置阿里云服务器的数据库密码

在使用阿里云服务器的过程中,设置数据库密码是一个重要且必要的步骤。然而,对于一些初次使用阿里云服务器的人来说,这个过程可能会遇到一些困难。这篇文章将会详细地解释如何设置阿里云服务器的数据库密码。在阿里云服务器上设置数据库密码,首先你需要登录到你的阿里云服务器。你可以在阿里云的控制台上找到服务器的登录入口。在登录页
如何设置阿里云服务器的数据库密码
2023-11-07

navicat怎么设置数据库密码

在 navicat 中设置数据库密码的方法包括:连接数据库、打开用户管理器、选择用户、设置密码、应用更改、重新连接。如何设置 Navicat 中的数据库密码Navicat 是一款强大的数据库管理工具,用于管理各种数据库系统。设置数据库密码
navicat怎么设置数据库密码
2024-05-30

如何在PostgreSQL中进行数据加密和安全设置

PostgreSQL数据加密和安全设置本文介绍PostgreSQL的安全功能,包括加密、访问控制、审计和用户身份验证。加密方法包括PBE、对称加密和非对称加密。访问控制通过角色和权限管理,允许您控制对数据的访问。审计允许跟踪数据库活动以检测异常行为。用户身份验证方法包括密码、令牌和LDAP。通过遵循最佳实践(如定期更新、使用强密码、启用审计和备份数据),您可以增强PostgreSQL数据库的安全性。
如何在PostgreSQL中进行数据加密和安全设置
2024-04-09

如何在PostgreSQL中进行数据加密和安全设置

在PostgreSQL中进行数据加密和安全设置可以通过以下几种方式来实现:使用SSL/TLS协议:通过配置数据库服务器和客户端之间的SSL/TLS连接,可以确保数据在传输过程中是加密的,从而防止数据被窃取或篡改。使用加密函数:Postgre
如何在PostgreSQL中进行数据加密和安全设置
2024-04-09

阿里云数据库密码设置密码是多少?

在进行阿里云数据库操作时,设置正确的密码是非常重要的。本文将详细介绍如何设置阿里云数据库的密码,以及密码的长度和复杂度要求。一、设置阿里云数据库密码的步骤登录阿里云控制台,点击“数据库服务”进入数据库管理页面。在数据库管理页面,选择您要操作的数据库,点击“管理”按钮。在数据库管理页面,点击“密码管理”选项。在密码
阿里云数据库密码设置密码是多少?
2023-10-30

阿里云ECS安全设置如何更改密码

阿里云ECS是阿里云提供的一种弹性计算服务,它可以帮助企业用户快速搭建和管理自己的云服务器。然而,由于安全考虑,阿里云ECS在出厂时默认密码通常都是随机生成的,并且为了保护用户隐私,阿里云并不提供密码重置功能。因此,为了确保服务器的安全,用户需要自行更改密码。本文将详细介绍如何更改阿里云ECS的密码。正文:首先,
阿里云ECS安全设置如何更改密码
2023-10-31

织梦安装阿里云数据库密码设置指南

在织梦系统中,阿里云数据库是常用的数据库之一。为了保护数据库的安全,我们需要设置数据库密码。本文将详细介绍如何在织梦系统中安装阿里云数据库,并设置数据库密码。一、安装阿里云数据库首先,我们需要在织梦系统中安装阿里云数据库。在织梦的“数据管理”中,找到“数据库管理”,点击“新建数据库”,在弹出的窗口中选择“阿里云数
织梦安装阿里云数据库密码设置指南
2023-12-17

如何在阿里云RDS数据库中设置账号密码

随着云计算技术的发展,越来越多的企业和个人开始使用云服务。阿里云RDS数据库作为阿里云提供的可扩展、高性能、高可用的云数据库服务,已经受到了广大用户的欢迎。然而,在使用RDS数据库的过程中,如何设置账号密码,是每个用户都必须了解的重要内容。本文将详细介绍如何在阿里云RDS数据库中设置账号密码。在阿里云RDS数据库
如何在阿里云RDS数据库中设置账号密码
2023-11-04

编程热搜

目录