mysql - 如何在 MySQL 8.0 中授予 root 用户所有权限

标签 mysql mysql-error-1064 mysql-8.0

试过

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

得到

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'root' WITH GRANT OPTION' at line 1.

注意:在以前的版本中尝试时也是如此。

也试过了

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

得到

ERROR 1410 (42000): You are not allowed to create a user with GRANT

MySQL (8.0.11.0) 用户名​​/密码是 root/root。

最佳答案

从 MySQL 8 开始,您不再可以(隐式)使用 GRANT 命令创建用户。使用CREATE USER相反,后跟 GRANT声明:

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'PASSWORD';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

注意关于WITH GRANT OPTION的安全风险,参见:

关于mysql - 如何在 MySQL 8.0 中授予 root 用户所有权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50177216/

相关文章:

创建计划事件时 MySQL 出错

python 3 使用mysql响应除法

php - 查询期间失去与 MySQL 服务器的连接 - PHP、MySQL

mysql - 我的 sql 查询不适用于数学运算符

mysql - 错误 1064 (42000) : Error near 'Match( match_id INT(30) NOT NULL, club1_id CHAR(5), club1_score_id INT(30), club' at line 1

MySQL 事务不返回任何行

mysql - 如何获取在 MYSQL 8 中列值更改之前首次出现的选择行

Mysql建表语法错误

mysql - 插入...仅选择一些字段

java - 与 MySql 的连接正在自动中止。如何正确配置Connector/J?