这应该很简单,但我不能让它为我的一生工作。我只是想远程连接到我的MySQL服务器。
连接方式:mysql-u根-h本地主机-p工作正常,但尝试:mysql-uroot-h'这里的任何ip地址'-p失败,错误为:错误1130(00000):主机“xxx.xx.xxx.xxx”不允许连接到此MySQL服务器
在mysql.user表中,主机为“localhost”的用户“root”的条目与主机为“%”的用户完全相同。
我束手无策,不知道该怎么办。欢迎提出任何想法。
这应该很简单,但我不能让它为我的一生工作。我只是想远程连接到我的MySQL服务器。
连接方式:mysql-u根-h本地主机-p工作正常,但尝试:mysql-uroot-h'这里的任何ip地址'-p失败,错误为:错误1130(00000):主机“xxx.xx.xxx.xxx”不允许连接到此MySQL服务器
在mysql.user表中,主机为“localhost”的用户“root”的条目与主机为“%”的用户完全相同。
我束手无策,不知道该怎么办。欢迎提出任何想法。
当前回答
那么,您可以做的就是打开mysql.cfg文件,然后将Bind地址更改为
绑定地址=127.0.0.1
然后重新启动mysql,您将能够将该服务器连接到此服务器。
看这个,你可以从那个里得到想法。
这是真的溶胶
其他回答
如果手动修改授权表(使用INSERT、UPDATE等),则应执行FLUSH PRIVILEGES语句,告诉服务器重新加载授权表。
PS:我不建议允许任何主机连接任何用户(尤其是非root用户)。如果您将mysql用于客户机/服务器应用程序,请首选子网地址。如果您在web服务器或应用程序服务器上使用mysql,请使用特定的IP。
这适用于任何未来的远程mysql连接!
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
导航到以bind address指令开头的行。应该是这样的:
bind-address = 0.0.0.0
以root终端身份登录mysql
mysql -u root -p
-- root password
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
最后,使用以下命令授予该计算机远程连接到数据库的独占权限。
sudo ufw allow from remote_IP_address to any port 3306
1.从终端将您连接到MySQL运行容器
docker exec -it your_container_name_or_id bash
2.在容器中,将您连接到MySQL数据库
mysql -u your_user -p
输入密码以连接到数据库。
3.执行此SQL脚本以列出所有现有数据库用户:
SELECT host, user FROM mysql.user;
结果如下:
host | user |
---|---|
127.0.0.1 | root |
::1 | root |
localhost | mysql.sys |
localhost | root |
您应该添加新行:
host | user |
---|---|
% | root |
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
这个答案可能会帮助某人。。。
所有这些答案都无济于事,然后我意识到我忘了检查一件重要的事情。。端口:)
我让mysql在一个运行在不同端口上的docker容器中运行。我指向3306端口上的主机,我的主机上运行着一个mysql服务器。我的容器在33060端口上暴露服务器。所以一直以来,我都在看错误的服务器!嘘!
如果您有WAMP服务器+Windows 10,并且正在使用它进行开发,请右键单击WAMP图标=>WAMP设置=>选中允许虚拟主机而不是127*