关于这个问题,这是我的个人意见。我也曾经遇到过在MySQL Workbench中连接问题。我使用Bitnami的MySQL虚拟机来设置本地开发环境。
Bitnami的教程建议运行"Grant All Privileges"命令:
/opt/bitnami/mysql/bin/mysql -u root -p -e "grant all privileges on *.* to 'root'@'%' identified by 'PASSWORD' with grant option";
很明显这并没有起作用,最终我使用了Mike Lischke的答案才使其起作用。
我认为发生的事情是root@%用户关联了错误的凭据。因此,如果您尝试修改用户权限却没有成功,请尝试:
- 删除该用户。
- 重新创建用户。
- 确保您在MySQL配置文件中有正确的绑定。
在我的情况下,我已经将这一行注释掉了,因为它只是针对沙盒环境的。
1. 删除该用户。
从Mysql控制台:
列出所有用户(有助于查看您的所有用户):
select user, host from mysql.user;
删除所需用户:
drop user '{{ username }}'@'%';
2. 再次创建用户。
创建用户并授权:
CREATE USER '{{ username }}'@'%' IDENTIFIED BY '{{ password }}';
GRANT ALL PRIVILEGES ON *.* TO '{{ username }}'@'%' WITH GRANT OPTION;
运行此命令:
FLUSH PRIVILEGES
3. 确保你的MySQL配置文件具有正确的绑定。
找到你的MySQL配置文件(附注在末尾)。如果你想让MySQL在多个网络上侦听连接,请在配置文件中找到以下行:
bind-address=127.0.0.1
并使用'#'进行注释:
对于生产环境,您可能希望限制网络访问(有关附注请参见结尾)。
然后重新启动MySQL服务。
希望这能帮助遇到相同问题的人!
绑定:如果您想了解更多信息,请查看以下解决方案如何将MySQL服务器绑定到多个IP地址。基本上它说你可以通过使用防火墙或者如果你有MySQL版本8.0.13及以上,则可以在本地留下MySQL并限制连接。
MySQL配置文件:该文件的位置可能因您的Linux发行版和安装而异。在我的系统中,它位于'/etc/my.cnf'
。这里是其他建议的位置:
- /etc/mysql/mysql.conf.d
- /etc/mysql/my.cnf
您也可以像此网站所示那样搜索配置文件的位置:如何查找MySQL配置文件的位置。
mysql -u root -p
命令启动 MySQL shell,然后输入 root 密码。接着我尝试执行GRANT GRANT OPTION ON *.* TO 'root'@'%';
命令,但是出现了错误信息ERROR 1410 (42000): You are not allowed to create a user with GRANT
。请帮我翻译以上内容。 - aiman