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

我该怎么做呢?


当前回答

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

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

其他回答

如果您的MySQL服务器进程正在监听127.0.0.1或::1,那么您将无法远程连接。如果您在/etc/my.cnf中设置了绑定地址,这可能是问题的根源。

您还必须为非本地主机用户添加特权。

在完成以上所有操作后,我仍然无法以根用户远程登录,但是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;

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

请按照下面提到的步骤来设置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

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