在 mysql 版本 8 中从 mysql cli 错误调用 mysql 函数密码

Calling mysql function PASSWORD from mysql cli error in mysql ver 8

我正在使用 mysql 版本 8.0

从 mysql cli 我正在尝试调用函数 PASSWORD。所以我使用了以下命令:

mysql > select 密码('123');

但是在这种情况下我得到以下错误: ERROR 1064 (42000):您的 SQL 语法有误;查看与您的 MySQL 服务器版本相对应的手册,了解在第 1 行

附近使用“('123')' 附近的正确语法

我也试过以下方法:

mysql > select 密码("123");

mysql > select 密码(`123`);

但是每一个都给出相同的错误。我也用谷歌搜索了很多,但找不到任何解决方案。

我该如何解决这个问题

此致, 坦维尔

PASSWORD() 在 5.7 中被弃用并在版本 8 中被移除。现在有更安全的密码处理方法,您应该考虑使用一种。

正如 mysql 关于 password() function 的文档所说:

This function was removed in MySQL 8.0.11.

如mysql文档所述,您应该使用alter user statement更改密码:

ALTER USER syntax is the preferred statement for account alterations, including assigning passwords. For example:

ALTER USER user IDENTIFIED BY 'auth_string'

直接更新 ACL 系统表(或与此相关的任何系统表)不是一种非常可持续的做法。

为什么需要执行 UPDATE mysql.user SET password = hash('clear-text-password') WHERE host = 'foo' and user = 'bar' 接着是 FLUSH PRIVILEGES (!) 当你可以做的时候: 更改用户 foo@bar 由 'clear-text-password' 识别?