MySQL修改密码安全策略

article/2025/9/16 12:38:58

文章目录

    • MySQL 跳过密码验证,并修改密码安全策略
      • 1.编辑/etc/my.cnf文件
      • 2.重启MySQL修改密码
      • 3.查看密码安全策略
      • 4. 修改/etc/my.cnf文件永久有效

MySQL 跳过密码验证,并修改密码安全策略

假如忘记登陆密码或者跳过MySQL密码策略验证时可以使用skip-grant-tables跳过数据库权限验证,然后修改密码并且不受策略限制

1.编辑/etc/my.cnf文件

  • 添加 skip-grant-tables
    跳过数据库权限验证

在这里插入图片描述

2.重启MySQL修改密码

直接登录到MySQL

[root@xytest ~]# mysql -u root -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.38 MySQL Community Server (GPL)Copyright (c) 2000, 2022, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> update user set password=password(“新密码”) where user=”用户名”;

执行后报错

ERROR 1054(42S22) Unknown column ‘password’ in ‘field list’

错误的原因是 5.7版本下的mysql数据库下已经没有 password 这个字段了,password 字段改成了 authentication_string

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> select * from user;+-----------+---------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| Host      | User          | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin                | authentication_string                     | password_expired | password_last_changed | password_lifetime | account_locked |
+-----------+---------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| %         | root          | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                | Y          | Y            | Y                      |          |            |             |              |             0 |           0 |               0 |                    0 | mysql_native_password | *A4B6157319038724E3560894F7F932C8886EBFCF | N                | 2022-06-20 13:29:42   |              NULL | N              |
| localhost | mysql.session | N           | N           | N           | N           | N           | N         | N           | N             | N            | N         | N          | N               | N          | N          | N            | Y          | N                     | N                | N            | N               | N                | N                | N              | N                   | N                  | N                | N          | N            | N                      |          |            |             |              |             0 |           0 |               0 |                    0 | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | N                | 2022-06-20 13:24:46   |              NULL | Y              |
| localhost | mysql.sys     | N           | N           | N           | N           | N           | N         | N           | N             | N            | N         | N          | N               | N          | N          | N            | N          | N                     | N                | N            | N               | N                | N                | N              | N                   | N                  | N                | N          | N            | N                      |          |            |             |              |             0 |           0 |               0 |                    0 | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | N                | 2022-06-20 13:24:46   |              NULL | Y              |
| %         | entegor       | N           | N           | N           | N           | N           | N         | N           | N             | N            | N         | N          | N               | N          | N          | N            | N          | N                     | N                | N            | N               | N                | N                | N              | N                   | N                  | N                | N          | N            | N                      |          |            |             |              |             0 |           0 |               0 |                    0 | mysql_native_password | *BE41F185DAC3CBC0D2D11115C7CC8C94C14E9E3B | N                | 2022-06-20 13:30:37   |              NULL | N              |
+-----------+---------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
4 rows in set (0.00 sec)

在这里插入图片描述

mysql> update mysql.user set authentication_string=password('pasword') where user='user';

修改完成后将 /etc/my.cnf 中的 skip-grant-tables 注释或者删除,重启MySQL服务即可

注意:如果使用 skip-grant-tables 跳过密码验证,修改密码完成之后发现新的密码仍然不能登陆,可以参考https://blog.csdn.net/D1179869625/article/details/122619177

3.查看密码安全策略

MySQL密码策略默认是通过validate_password_policy属性进行设置的。我们可以通过下面语句进行查询:

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

策略为0时,密码强度最低,只要长度满足就可以了。策略为1时,也就是MEDIUM,不仅需要长度满足,还有数字,大小写,特殊字符要求。因此我们可以通过设置该属性来该变策略。

mysql> set global validate_password_policy=0;

以上设置只能临时生效,重启MySQL服务后就不能使用了(即临时修改某用户密码时可以,永久生效请往下看)

  • 密码策略的其它设置可以通过下面进行查看:
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| 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.06 sec)
参数说明
validate_password_check_user_name用户名检测,检测是否重名(不常用)
validate_password_dictionary_file字典文件,启动后必须要满组所使用字典的规则才能满足密码的条件(不常用)
validate_password_length密码的长度
validate_password_mixed_case_count密码中英文字符大小写的个数,当密码策略是MEDIUM或以上时生效。
validate_password_number_count密码中至少含有的数字个数,当密码策略是MEDIUM或以上时生效。
validate_password_policy这个参数可以设为0、1、2,分别代表从低到高的密码强度,此参数的默认值为1,如果想将密码强度改若,则更改此参数为0。
validate_password_special_char_count密码中非英文数字等特殊字符的个数,当密码策略是MEDIUM或以上时生效。

所以,我们不仅可以通过设置 validate_password_policy 属性来修改密码强度,还可以通过修改其它属性。只是通过 validate_password_policy 比较方便。

4. 修改/etc/my.cnf文件永久有效

在 /etc/my.cnf 配置文件中添加如下配置

validate_password_policy=0
策略为0时,密码强度最低,只要长度满足就可以了validate_password_length=0
官网描述:validate_password_length 最小值是几个其他相关系统变量的函数 。 该值不能设置为小于此表达式的值,所以如果按本次测试将 `validate_password_length` 修改为 0 ,那么在设置密码长度时最少也要有四个字符的长度

官网参考:https://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html

在这里插入图片描述
在这里插入图片描述
修改完成后重启MySQL服务即可

systemctl restart mysqld

 
 
 
 
 


http://chatgpt.dhexx.cn/article/bD4a0B2S.shtml

相关文章

Linux下Mysql修改密码

说到这里,特别生气,我的云服务器被黑了,然后把我数据库里的表全部删掉,然后还给我改了密码。此时好痛恨哪些攻击者,我什么都没有,你说你攻击个毛线。话不多说,接下来看操作 重置密码解决MySQL f…

Mysql修改密码报错解决办法

自己在项目中遇到的实际问题,也从网上找了很多的信息,试了很多次,报错信息(本人使用的mysql版本是8.0.0.25): 说白了,就是提示你语句写的不对,在near…有错误。原文链接参考:https://blog.csdn.…

MySQL修改密码时,报错ERROR 1064 (42000)【新版MySQL修改密码命令有所变更】

相信大家都遇到过这种情况,在用 命令行 运行的 MySQL 中修改密码时,出现以下错误: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax t…

mysql修改密码方法大全

MySQL是一个关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。搭配 PHP 和 Apache 可组成良好的开发环境。因此用的很广泛。很多人都会遇到MySQL需要修改密码的情…

mysql修改密码(最全)

第一种方式: 最简单的方法就是借助第三方工具Navicat for MySQL来修改,方法如下: 1、登录mysql到指定库,如:登录到test库。 2、然后点击上方“用户”按钮。 3、选择要更改的用户名,然后点击上方的“编辑用…

MySQL修改root用户密码

目录 知道密码 忘记密码 知道密码 在清楚的知道密码的情况之下可以使用以下几种方式修改MySQL的密码。 方式一 登录mysql执行以下语句 mysql -u root -p 按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应: Enter password: 若密码存在, 输入密码登录, 不存在…

【文件处理】python删除指定文件

目标:删除主文件夹下的文件以及主文件夹下的文件夹里的html文件。 文件:结果: #!python3 import os import sys import cv2 as cv"""设置主文件夹路径""" path E:/102_ningxia_wuzhong/FriesianCattle2017/2y…

Python 中删除文件的几种方法 【赶紧收藏】

很多时候开发者需要删除文件。可能是他错误地创建了文件,或者不再需要该文件。无论出于何种原因,都有一些方法可以通过Python来删除文件,而无需手动查找文件并通过UI交互来进行删除操作。 使用Python删除文件有多种方法,但是最好的方法如下: os.remove()删除文件 os.un…

python 删除文件夹和文件【转】

python 删除文件夹和文件 目录 一、三种删除方法 二、删除失败情况 PermissionError: [WinError 5] 拒绝访问 2.1 给python权限 2.2 删除改为更名 一、三种删除方法 python删除文件和文件夹主要用到os模块和shutil模块,针对文件夹和文件的删除,有几种情…

Python 中删除文件的几种方法

很多时候开发者需要删除文件。可能是他错误地创建了文件,或者不再需要该文件。无论出于何种原因,都有一些方法可以通过Python来删除文件,而无需手动查找文件并通过UI交互来进行删除操作。 使用Python删除文件有多种方法,但是最好的…

使用phpstudy+nat123实现网站发布(实现外网访问内网)

第一次想在网上分享点东西,结果发错了,发成了提问,在这里重新发一遍,看过的见谅! 1.phpStudy phpStudy是一个集成了最新的ApachePHPMySQLphpMyAdminZendOptimizerPHP等程序的集成包,安装完成后,…

nat123内网穿透

在做开发的时候,因为自己没有服务器,想要自己的网站啥的可以外网访问怎么办,这时候咱们可以通过一个工具:nat123来做个内网穿透,非常简单,下面这里做个简单的示范,nat123安装包,我这…

windows 下 nat123免费版内网穿透使用教程

1、首先进入nat123官方网站 http://www.nat123.com/Pages_2_32.jsp,下载windows版,根据环境变量选择下载。 2、安装程序,安装成功后运行,需要注册用户登录,自行注册。 3、点击添加映射,填写完成后点击保存…

在NAT内网环境下使用nginx+nat123搭建外网可访问的代理服务器

原理都一样,都是把内网的某个端口映射到外网上,只不过相对于买虚拟主机,买服务器等等,这个相对简单而且方便一些。而且还便宜(貌似这个公司还处在创业期,至于后期会不会狠宰用户还很难说)下面介…

使用 nat123 用自己电脑做服务器(在自己有网络的电脑上映射到外网域名访问)

最近自己想发布一个项目,买了相应的域名,但是没有买服务器,因为在初始阶段,想后面点再买服务器,现在想用自己的电脑做服务器,于是在网上找到了 nat123这个软件,根据我的经历,刚开始使…

[分享] linux利用nat123发布网站及注意事项

首先需要安装nat123以及客户端,相关的安装流程如下。 然后是在nat123中进行全端口映射,这个是转载的教程,如下。 这里有一些小细节要注意: 在nat123全端口映射添加完成之后,就要进行网站发布的工作,主要都是…

nat123端口映射: 外网通过ssh访问内网非公网ip的服务器

问题描述 LINUX部署在内网环境,没有公网IP,在内网可以上外网。如何实现在外网SSH访问内网LINUX主机? 解决方法: 使用nat123端口映射,一步映射即可将内网LINUX地址映射到外网,实现外网的访问。 nat123提…

使用nat123怎样解决网速慢的问题?

许多人在使用Nat123时会遇到网速慢的问题,下面就来说说相关的解决方法。 1、cname正确指向。cname指向的唯一性。使用自己的域名时,如设置cname指向nat123的,确保cname的唯一性,不对应的cname指向解析慢或其他不可预知的问题。修…

我的世界nat123联机教程

我的世界MC开服,使用nat123游戏联机教程。 一,我的世界MC局域网内部署测试 目的就是确保在内网可以正常访问。 1.下载并安装/解压我的世界MC开服器到本地。 本文最后有附上一个纯净的开服包,提供有需要的下载使用。 开服包主要有二个文件…

内网穿透的几种方式-免费与收费(钉钉、Frp、花生壳、nat123)

内网穿透的几种方式-免费与收费(钉钉、Frp、花生壳、nat123) 方式一(钉钉) 阿里钉钉提供的免费内网穿透,是基于ngrok 的,可以实现 Http 穿透,可以将我们本地服务暴露给外部访问,可以用作我们调试一些回调接口,或者共…