授予权限时出错 - Mysql GRANT已过时,应使用ALTER USER代替。

5
我正在使用最新版本的mysql。运行以下命令时,它要求我使用ALTER USER命令而不是GRANT。我没有看到使用ALTER USER命令更新权限的语法。 https://dev.mysql.com/doc/refman/5.7/en/alter-user.html
GRANT ALL PRIVILEGES ON *.* to 'root'@'localhost' IDENTIFIED by1234’;

任何指针都将不胜感激。
1个回答

8

GRANT的文档中提到:

注意

如果在GRANT语句中指定的帐户不存在,则GRANT可能会根据稍后在讨论NO_AUTO_CREATE_USER SQL模式时描述的条件创建它。还可以使用GRANT来指定非特权帐户特征,例如是否使用安全连接以及对服务器资源的访问限制。

然而,自MySQL 5.7.6起,使用GRANT创建帐户或定义非特权特征已被弃用。改为使用CREATE USERALTER USER执行这些任务。

您查询中的IDENTIFIED by '1234'部分用于设置/更改用户密码。密码不是特权,应使用ALTER USER进行更改。

请使用:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'

为用户授予所需的权限:

ALTER USER 'root'@'localhost' IDENTIFIED BY '1234'

如有需要,可以更改密码。

备注

值得一提的是,ALTER USER 语句是在 MySQL 5.6 中引入的。对于旧版本,GRANT 语句是更改用户密码的唯一途径。


2
不错的回答。我删除了我的错误答案。仍然想提到的是,据我所知,不应该使用root用户。 - vrijdenker
授予 'db_user'@'%' 对 . 的 SELECT 权限;以避免问题 https://dev59.com/8WIj5IYBdhLWcg3wpmkH#20061002 - Sachin G.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接