【问题标题】:MySQL Errors - You must SET PASSWORD/Password hash should be a 41-digit hexadecimal numberMySQL 错误 - 您必须设置密码/密码哈希应该是 41 位十六进制数
【发布时间】:2015-05-08 15:13:46
【问题描述】:

所有,这可能是一个简单的修复,但我似乎无法让它工作......

我正在尝试设置 MySQL 数据库(在 RHEL 上)但收到以下错误:

mysql> SELECT 1;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
mysql> SET PASSWORD = PASSWORD('new_pass');
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
mysql> SELECT PASSWORD('new_pass');
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

我已经尝试了所有可能的命令/查询,但我无法绕过这两个错误消息。也许我的权限有问题?有什么想法吗?谢谢!

【问题讨论】:

  • 您有没有想过检查documentation 的语法是否正确?
  • 在设置密码之前运行这个SET old_passwords = 0;

标签: mysql mediawiki


【解决方案1】:

使用这个SET old_passwords = 0;

old_passwords 系统变量值决定散列方法 由 PASSWORD() 使用。如果 SET PASSWORD 拒绝密码为不是 以正确的格式,可能需要将 old_passwords 更改为 更改哈希方法。例如,如果帐户使用 mysql_native_password 插件,old_passwords 值必须为 0:

SET old_passwords = 0; 为'jeffrey'@'localhost'设置密码= 密码(“我的通行证”);如果 old_passwords 值与该值不同 身份验证插件所需的哈希密码值 PASSWORD() 返回的插件不接受该插件,并尝试 设置密码产生错误。例如:

mysql> SET old_passwords = 1; mysql> 设置密码 '杰弗里'@'localhost' = PASSWORD('mypass');错误 1372 (HY000): 密码哈希应该是 41 位十六进制数 允许 old_passwords 值将在本节后面介绍。

使用 OLD_PASSWORD() 函数(仅在 MySQL 5.7.5 之前允许):

【讨论】:

    【解决方案2】:

    如果你想修改mysql的密码,你应该使用下面的命令代码,

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('New_Password');
    

    【讨论】:

    • 这种方式对我有用
    猜你喜欢
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 2014-07-29
    • 2018-02-13
    • 2015-03-24
    • 2011-12-14
    相关资源
    最近更新 更多