试着
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
得到
错误1064(42000):你有一个错误的SQL语法;查看手册
对应于你的MySQL服务器版本,正确的语法使用'IDENTIFIED BY 'root' WITH GRANT OPTION'在第一行。
注意:在以前的版本中尝试时,相同的工作。
也试过
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
得到
错误1410(42000):不允许使用GRANT创建用户
MySQL(8.0.11.0)用户名/密码为root/root。
1)这对我很管用。首先,创建一个新用户。示例:用户名为foo,密码为bar
> mysql> CREATE USER 'foo'@'localhost' IDENTIFIED WITH mysql_native_password BY 'bar';
2)将下面的代码替换为用户名'foo'。
> mysql> GRANT ALL PRIVILEGES ON database_name.* TO'foo'@'localhost';
注意:database_name是你想要拥有权限的数据库。意思是所有对所有
3)以foo用户登录
mysql> mysql -u foo -p
密码:酒吧
4)确保你的初始连接从Sequelize设置为foo与pw bar。
1. 授予的权限
授予mysql>的所有权限。以授予选项“根”@“%”;
mysql> FLUSH PRIVILEGES
2. 检查用户表:
Mysql >使用Mysql
Mysql > select host,user from user
3.修改配置文件
Mysql默认绑定ip:127.0.0.1,如果我们要远程访问服务,只需删除配置
#Modify the configuration file
vi /usr/local/etc/my.cnf
#Comment out the ip-address option
[mysqld]
# Only allow connections from localhost
#bind-address = 127.0.0.1
4.最后重新启动服务
重启mysql
指定的用户在您的MySQL上不存在(因此,MySQL试图像在版本8之前那样使用GRANT创建它,但由于此版本引入的限制而失败)。
MySQL在这一点上是相当愚蠢的,所以如果你有'root'@'localhost',并试图授予'root'@'%'特权,它将它们视为不同的用户,而不是任何主机上的广义root用户,包括localhost。
错误消息也具有误导性。
因此,如果您得到错误消息,请使用以下内容检查现有用户
SELECT CONCAT("'", user, "'@'", host, "'") FROM mysql.user;
然后创建缺失的用户(正如Mike建议的那样),或者将GRANT命令调整为实际存在的用户规范。