【mysql |centos |mysql设置】MySQL修改密码并创建用户,系统安全默认开启了密码复杂度检查组件,怎么解决

文章目录

    • [问题一: 如何绕过安全检查设置简单密码?](#问题一: 如何绕过安全检查设置简单密码?)
    • [问题二:在使用 CREATE USER 之前,必须先使用 ALTER USER 修改 root localhost 的密码吗?](#问题二:在使用 CREATE USER 之前,必须先使用 ALTER USER 修改 root localhost 的密码吗?)
    • [问题三?GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;和FLUSH PRIVILEGES;是一个原理吗?](#问题三?GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;和FLUSH PRIVILEGES;是一个原理吗?)
      • [问题四:CREATE USER 'root'@'%' IDENTIFIED BY 'Atguigu.123'; 其中的'root'@'%'是什么意思?](#问题四:CREATE USER 'root'@'%' IDENTIFIED BY 'Atguigu.123'; 其中的'root'@'%'是什么意思?)

问题一: 如何绕过安全检查设置简单密码?

分析:Error 1819:你想改简单密码,但系统嫌密码太简单,不让你改。

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

解决:绕过安全检查设置简单密码

现在处于"必须改密码"的状态(Error 1820),无法直接修改安全配置.。

  1. 先暂时妥协,设置一个符合要求的复杂密码。

    为了解锁终端,先设置一个包含 大写字母 + 小写字母 + 数字 + 特殊符号 的密码(临时用,马上就会改掉)。
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root_1234';

  2. 降低安全策略等级.

把那个烦人的密码策略关掉或者调低

  • 查看当前策略变量名(不同版本 MySQL 变量名可能是 validate_password_xxx validate_password.xxx):
    SHOW VARIABLES LIKE 'validate_password%';
    • 修改策略(根据上一步查到的名字,如果是 MySQL 5.7 是下划线,8.0 是点。以下以 MySQL 8.0 常见的点号为例):
sql 复制代码
-- 将策略等级设为 LOW (只校验长度)
SET GLOBAL validate_password.policy = 0;

-- 将密码最小长度设为 1 (实际 MySQL 最低限制通常是 4)
SET GLOBAL validate_password.length = 1;
  1. 此时,就可以修改简单的密码了

  2. 检查

  3. 成功

问题二:在使用 CREATE USER 之前,必须先使用 ALTER USER 修改 root localhost 的密码吗?

是的,必须先修改。

分析:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

表示 MySQL 处于一种"待初始化"的封锁状态。

在这种状态下,MySQL 拒绝执行任何 非重置密码的操作。你必须先对当前登录的用户(即 'root'@'localhost')执行 ALTER USER 重置密码,让 MySQL 知道"我已经初始化完毕了",解除封锁状态后,你才能去创建其他的远程用户。

设置其他远程用户。

在这里插入代码片;

sql 复制代码
-- 第一步:先解锁本地账号(必须做!否则后面的 CREATE 会报错)
-- 既然你用了 Atguigu.123 这个复杂密码,就不需要降低安全策略了,直接用它
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Atguigu.123'; 

-- 第二步:现在的你已经"自由"了,可以执行你的三行命令了
CREATE USER 'root'@'%' IDENTIFIED BY 'Atguigu.123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

问题三?GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;和FLUSH PRIVILEGES;是一个原理吗?

它们不仅原理不同,甚至是完全相反的操作逻辑。

  1. GRANT 命令
    原理:标准流程办理(写数据 + 自动生效)
    场景:你要给一个新员工(root)开通所有门禁权限。
    动作:你走到安保处的窗口,对管理员说:"给 root 办一张全通卡"。
    结果:管理员在电脑里录入信息,同时通知门禁系统。
    状态:立刻生效。root 拿着卡马上就能刷开门,不需要做任何额外操作。
    技术层面:GRANT 命令会同时修改磁盘上的权限表(持久化)和内存中的权限缓存(即时生效)。
  2. FLUSH PRIVILEGES 命令
    原理:强制刷新系统(重读数据)
    场景:你没有走安保处窗口,而是像黑客一样,偷偷溜进机房,直接用笔在硬盘里的"白名单文件"上手写了一行字:允许 root 进门。
    问题:虽然文件改了,但门禁系统的内存里还存着旧的名单,它不知道你偷偷改了文件。这时候 root 刷卡还是进不去。
    动作:你按下了门禁系统的**"重启/刷新按钮"**。 结果:系统重新启动,把硬盘里的白名单文件重新读取了一遍,这时候它才发现:"哦,多了一个
    root"。 技术层面:FLUSH PRIVILEGES 强迫 MySQL 放弃内存里现有的权限数据,重新从磁盘的表中加载一份新的。

问题四:CREATE USER 'root'@'%' IDENTIFIED BY 'Atguigu.123'; 其中的'root'@'%'是什么意思?

在 MySQL 中,'root'@'%' 是由两部分组成的,它定义了一个完整的用户账号。

在 MySQL 眼里,账号不仅仅是用户名,**而是"用户名 + 允许登录的地址"。

**


'root'@'%' 的完整含义 --- 一个名为 root 的用户,允许使用正确的密码,从世界上的任何一台电脑(任何 IP)远程连接到通过这个数据库。

相关推荐
枕布响丸辣2 小时前
Linux 系统安全及应用实战:账号、引导、弱口令与端口扫描全解析
linux·运维·系统安全
zzh0812 小时前
Linux系统安全
linux·运维·系统安全
WangJunXiang62 小时前
系统安全及应用
安全·github·系统安全
刘晨鑫12 小时前
系统安全及应用
安全·系统安全
ego.iblacat2 小时前
Linux 系统安全及应用
linux·运维·系统安全
卢傢蕊2 小时前
Linux系统安全
linux·运维·系统安全
|华|2 小时前
系统安全及应用
安全·系统安全
色空大师2 小时前
【mysql建表避坑指南】
数据库·mysql
V1ncent Chen2 小时前
从零学SQL 02 MySQL架构介绍
数据库·sql·mysql·架构·数据分析