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

我该怎么做呢?


当前回答

启用远程根访问可能是危险的。如果您要设置具有更严格权限的用户帐户,则更可取。以下三个步骤可以做到这一点。

Ensure that the line starting with bind-address ... is at least commented out in your my.ini or my.cnf file. If it doesn't exist, move on. You can find this file in C:\ProgramData\MySQL\MySQL Server 8.0 on Windows. Afterwards, check that the user account you are establishing the connection with does not have localhost in the Limit to Hosts Matching field. While it isn't recommended, you can instead put % in that field for testing purposes. You can do this by opening a local connection to the server with MySQL Workbench, then going to Server>Users and Privileges from the menu bar and finding the user account you want to connect with.

“限制主机匹配”字段是不允许您连接非本地。也就是说,它将接受的连接限制为一个IP地址模式。理想情况下,您应该从静态IP地址或子网访问MySQL服务器,这样您就可以尽可能地限制。

显然,您的防火墙应该允许MySQL服务器应用程序通过您想要的端口进行通信。您和服务器之间的物理网络设备应该允许在您想要连接的端口上进行通信。(通常端口为3306)

其他回答

在完成以上所有操作后,我仍然无法以根用户远程登录,但是telnet到3306端口确认MySQL正在接受连接。

我开始查看MySQL中的用户,并注意到有多个具有不同密码的根用户。

select user, host, password from mysql.user;

所以在MySQL中,我再次为root设置了所有密码,我最终可以以root身份远程登录。

use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;

请按照下面提到的步骤来设置MySQL用户的通配符远程访问。

(1) Open cmd. (2) navigate to path C:\Program Files\MySQL\MySQL Server 5.X\bin and run this command. mysql -u root -p (3) Enter the root password. (4) Execute the following command to provide the permission. GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'IP' IDENTIFIED BY 'PASSWORD'; USERNAME: Username you wish to connect to MySQL server. IP: Public IP address from where you wish to allow access to MySQL server. PASSWORD: Password of the username used. IP can be replaced with % to allow user to connect from any IP address. (5) Flush the previleges by following command and exit. FLUSH PRIVILEGES; exit; or \q

远程登录的所有流程。默认关闭远程登录。你需要手动打开所有ip..来访问所有ip

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

特定的Ip

GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';

然后

flush privileges;

您可以检查您的用户主机和密码

SELECT host,user,authentication_string FROM mysql.user;

现在你的责任就是改变这一切

bind-address = 127.0.0.1

你可以找到这个

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

如果你在那里找不到这个,那就试试这个

sudo nano /etc/mysql/my.cnf

在此评论

#bind-address = 127.0.0.1

然后重新启动Mysql

sudo service mysql restart

现在享受远程登录

检查远程服务器是否允许通配符访问端口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

如果你从brew安装MySQL,默认情况下它只监听本地接口。要解决这个问题,您需要编辑/usr/local/etc/my.cnf并将绑定地址从127.0.0.1更改为*。

然后运行brew services重启mysql。