我在 CentOS 6.9 中安装了 MySQL 5.7.2。在其他系统(Debian、Arch)中,当我安装 mysql 时,它会在安装过程中提示输入 root 密码,但在这种情况下,它没有提示输入密码。所以我尝试使用空白密码登录 mysql shell。但 mysql 报告拒绝访问信息。
然后我尝试在 mysql 安全模式下设置新密码。
$ service mysqld stop
$ mysql_safe --skip-grant-tables &
$ mysql -u root
mysql > USE mysql;
mysql > UPDATE user SET authentication_string = PASSWORD('mypass') WHERE User='root';
mysql > FLUSH PRIVILEGES;
(有些人被指示使用密码专栏。但我没有找到这个专栏用户表。所以我用身份验证_字符串柱子)
运行完美。我可以使用新密码以 root 身份登录 mysql shell。
然后我安装了phpmyadmin。当我尝试使用我的 mysql 凭据登录 phpmyadmin 时,它报告以下错误:
1862 - 您的密码已过期。要登录,您必须使用支持过期密码的客户端更改密码。
mysqli_real_connect():(HY000/1862):您的密码已过期。要登录,您必须使用支持过期密码的客户端更改密码。
为了解决这个问题,我登录到 mysql shell 并尝试了这个:
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
它报告了以下错误:
错误 1820 (HY000):在执行此语句之前,您必须使用 ALTER USER 语句重置密码。
所以我尝试在 mysql shell 中执行以下操作
mysql > ALTER USER 'root'@'localhost' IDENTIFIED BY 'mypass';
但是报如下错误:
错误 1819 (HY000):您的密码不符合当前政策要求
然后我尝试使用重置密码mysql_secure_安装. 它还报告相同类型的错误:
... 失败!错误:您的密码不符合当前政策要求
现在我被困住了。问题是什么?我该如何解决这个问题?提前谢谢!
答案1
您的密码不符合当前政策要求。
假设安装了validate_password插件,它实现了三个级别的密码检查:LOW、MEDIUM和STRONG。默认值是中等的;
中等定义为:
MEDIUM 策略增加了以下条件:密码必须至少包含 1 个数字字符、1 个小写字符、1 个大写字符和 1 个特殊(非字母数字)字符。
使用满足这些要求的密码,设置validate_password_policy
或LOW
禁用密码验证插件。