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

我该怎么做呢?


当前回答

当我在一个Java项目中使用MySQL服务器作为数据库时,我遇到了这个挑战。

我是这样做的:

首先,确认您的MySQL服务器配置允许远程连接。使用您喜欢的文本编辑器打开MySQL服务器配置文件:

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

向下滚动到绑定地址行,并确保它要么被注释掉,要么被替换为0.0.0.0(以允许所有远程连接),要么被替换为您想要远程连接的ip -address。

完成必要的更改后,保存并退出配置文件。通过重新启动MySQL服务,应用MySQL配置文件所做的更改:

sudo systemctl restart mysql

接下来,登录到已安装的服务器上的MySQL服务器控制台:

mysql -u root -p

输入mysql用户密码

检查您想要的用户已经访问的主机。在我的例子中,用户是root:

SELECT host FROM mysql.user WHERE user = "root";

这给了我这样的输出:

+-----------+
| host      |
+-----------+
| localhost |
+-----------+

接下来,我运行下面的命令,授予root用户对名为my_database的数据库的远程访问权限:

USE my_database;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-password';

注意:%授予用户从网络上的所有主机进行远程访问。您可以使用命令grant ALL PRIVILEGES ON *指定要授予用户访问权限的单个主机的Ip-Address。*“root”@“ip地址”IDENTIFIED BY“my-password”;

之后,我检查了用户现在已经访问的主机。在我的例子中,用户是root:

SELECT host FROM mysql.user WHERE user = "root";

这给了我这样的输出:

+-----------+
| host      |
+-----------+
| %         |
| localhost |
+-----------+

最后,您可以尝试从另一个服务器使用命令连接到MySQL服务器:

mysql -u username -h mysql-server-ip-address -p

其中u代表用户,h代表mysql-server-ip-address, p代表密码。所以我的情况是:

mysql -u root -h 34.69.261.158 -p

输入mysql用户密码

根据你的MySQL服务器版本,你应该得到这个输出:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.31 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

参考资料:如何允许远程连接到MySQL

这是所有。

我希望这对你们有帮助

其他回答

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

根据我的经验,你可以在这个路径下找到配置文件/etc/mysql/mysql.conf.d/mysqld.cnf。

(我挣扎了一段时间才找到这条路)

在我的情况下,我试图连接到一个远程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上是默认允许的。

默认情况下禁用的是远程根访问。如果你想启用它,在本地运行这个SQL命令:

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

然后找到下面的行,并在my.cnf文件中注释它,该文件通常位于Unix/OSX系统的/etc/mysql/my.cnf中。在某些情况下,文件的位置是/etc/mysql/mysql.conf.d/mysqld.cnf)。

如果是Windows系统,你可以在MySQL安装目录中找到它,通常是C:\Program Files\MySQL\MySQL Server 5.5\,文件名是my.ini。

改变行

 bind-address = 127.0.0.1

to

 #bind-address = 127.0.0.1

并重新启动MySQL服务器(Unix/OSX和Windows)以使更改生效。

当我在一个Java项目中使用MySQL服务器作为数据库时,我遇到了这个挑战。

我是这样做的:

首先,确认您的MySQL服务器配置允许远程连接。使用您喜欢的文本编辑器打开MySQL服务器配置文件:

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

向下滚动到绑定地址行,并确保它要么被注释掉,要么被替换为0.0.0.0(以允许所有远程连接),要么被替换为您想要远程连接的ip -address。

完成必要的更改后,保存并退出配置文件。通过重新启动MySQL服务,应用MySQL配置文件所做的更改:

sudo systemctl restart mysql

接下来,登录到已安装的服务器上的MySQL服务器控制台:

mysql -u root -p

输入mysql用户密码

检查您想要的用户已经访问的主机。在我的例子中,用户是root:

SELECT host FROM mysql.user WHERE user = "root";

这给了我这样的输出:

+-----------+
| host      |
+-----------+
| localhost |
+-----------+

接下来,我运行下面的命令,授予root用户对名为my_database的数据库的远程访问权限:

USE my_database;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-password';

注意:%授予用户从网络上的所有主机进行远程访问。您可以使用命令grant ALL PRIVILEGES ON *指定要授予用户访问权限的单个主机的Ip-Address。*“root”@“ip地址”IDENTIFIED BY“my-password”;

之后,我检查了用户现在已经访问的主机。在我的例子中,用户是root:

SELECT host FROM mysql.user WHERE user = "root";

这给了我这样的输出:

+-----------+
| host      |
+-----------+
| %         |
| localhost |
+-----------+

最后,您可以尝试从另一个服务器使用命令连接到MySQL服务器:

mysql -u username -h mysql-server-ip-address -p

其中u代表用户,h代表mysql-server-ip-address, p代表密码。所以我的情况是:

mysql -u root -h 34.69.261.158 -p

输入mysql用户密码

根据你的MySQL服务器版本,你应该得到这个输出:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.31 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

参考资料:如何允许远程连接到MySQL

这是所有。

我希望这对你们有帮助