我已经在我的本地机器上安装了MySQL Community Edition 5.5,我想允许远程连接,这样我就可以从外部源连接。

我该怎么做呢?


当前回答

在我的情况下,我试图连接到一个远程mysql服务器在cent操作系统。在经历了许多解决方案(授予所有特权,删除ip绑定,启用网络)后,问题仍然没有得到解决。

事实证明,在寻找各种解决方案时,我遇到了iptables,这让我意识到mysql端口3306不接受连接。

下面是关于我如何检查和解决这个问题的一个小说明。

检查端口是否接受连接:

telnet (mysql server ip) [portNo]

添加ip表规则,允许端口上的连接:

iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

不建议在生产环境中这样做,但如果您的iptables没有正确配置,添加规则可能仍然不能解决问题。在这种情况下,应该做以下工作:

service iptables stop

希望这能有所帮助。

其他回答

MySQL 8不再允许您使用GRANT命令创建用户。您需要首先创建用户。

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

这篇如何在局域网上安装MySQL服务器的博客将有助于从头开始安装MySQL

对于OS X用户,请注意bind-address参数通常是在launchd plist中设置的,而不是在my.ini文件中。所以在我的情况下,我删除了<string>——bind-address=127.0.0.1</string>从/Library/LaunchDaemons/homebrew.mx .mariadb.plist。

关闭链接/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/mysql/my.cnf的注释:

bind-address = 127.0.0.1  =>>  #bind-address = 127.0.0.1

修改主机名以便所有机器都可以访问它,在本地运行这个SQL命令:

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='root';
FLUSH PRIVILEGES;

重新启动服务:

sudo service mysql restart

打开mysql端口:

sudo ufw allow 3306

检查远程服务器是否允许通配符访问端口3306:

sudo lsof -i -P -n | grep监听

不应该是这样的:

mysqld 23083 mysql 21u IPv4 145900142 0t0 TCP 127.0.0.1:3306(听)

在这种情况下,我们需要更新/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/mysql/mariadb.conf.d/50-server.cnf:

Bind-address = 127.0.0.1——> 0.0.0.0

然后重新启动mysql "sudo service mysql restart"

为了从客户端测试mySQL连接:

Nc -vz <host_address> 3306