在本教程中,小编将引导大家逐步完成允许远程连接Linux系统上的MySQL服务器的说明。这些说明应该独立于我们使用
的任何Linux发行版而工作。在本教程中我们将学习:
如何允许远程连接MySQL服务器?
如何通过系统防火墙允许远程连接MySQL?
如何创建或更改MySQL用户以允许远程连接?
允许远程连接到MySQL数据库的过程分为三步。
首先,我们需要通过在MySQL配置文件中配置公共绑定地址来将MySQL服务设置为可从远程计算机访问。
其次,我们需要允许通过系统防火墙进行远程访问。默认情况下,MySQL在端口3306上运行,因此需要允许到该端口的
连接。
最后,我们需要创建一个新用户或编辑现有用户,以使其可以从远程 IP 地址访问。我们可以选择允许所有IP地址或仅允
许特定IP地址。
一、配置MySQL绑定地址
1、我们将从打开/etc/mysql/mysql.cnf文件开始。使用root权限,在nano或我们喜欢的文本编辑器中打开它。
$ sudo nano /etc/mysql/mysql.cnf
2、bind-address找到该部分下方的设置[mysqld]。默认情况下,当前应配置为环回地址127.0.0.1。删除该地址并将服务
器的公共IP地址放在其位置。10.1.1.1我们仅出于示例目的而使用。
[mysqld]
绑定地址 = 10.1.1.1
如果需要,我们可以使用0.0.0.0作为绑定地址,它是一个通配符,应该将服务绑定到所有可访问的接口。不建议这样做,
但如果我们以后遇到问题,这有助于排除故障。
[mysqld]
绑定地址 = 0.0.0.0
3、进行更改后,保存对文件的更改并退出。然后,我们需要重新启动 MySQL服务以使更改生效。
$ sudo systemctl重新启动mysql
在某些发行版上,可能会调用该服mysqld:
$ sudo systemctl 重新启动mysqld
二、允许通过防火墙进行远程访问
假设我们的MySQL服务器使用端口3306,我们需要允许它通过系统防火墙。我们需要执行的命令将取决于我们正在使用
的发行版。
在Ubuntu系统和其他使用ufw(简单防火墙)的系统上:
$ sudo ufw 允许 mysql
在 Red Hat、CentOS、Fedora 以及使用 firewalld 的衍生系统上:
$ sudo 防火墙-cmd --zone=public --add-service=mysql --permanent
$ sudo 防火墙-cmd --reload
iptables还有一个应该适用于任何系统的古老命令:
$ sudo iptables -A 输入 -p tcp --dport 3306 -m conntrack --ctstate 新,已建立 -j 接受
三、允许远程连接到特定用户
现在MySQL服务可以接受传入连接,并且我们的防火墙将允许它们通过,我们只需将用户配置为接受远程连接即可。
首先使用root帐户打开MySQL。
$ sudo mysql
或者,在某些配置中,我们可能需要输入以下命令并提供root密码:
$ mysql -u 根 -p
如果我们已经创建了一个用户,并且需要将该用户配置为可从远程 IP 地址访问,我们可以使用MySQL命令RENAME
USER。我们将使用户可以通过下面示例命令中的linuxconfigIP地址进行访问,但请根据自己的配置需要进行调整。
10.150.1.1
mysql> 将用户'linuxconfig'@'localhost'重命名为'linuxconfig'@'10.150.1.1';
或者,如果我们是第一次创建此用户,我们将使用该CREATE USER命令。请务必将以下用户名、IP 地址和密码替换为我
们自己的。
mysql> 创建用户“linuxconfig”@“10.150.1.1”,由“password_here”标识;
如果我们希望可以从任何IP地址访问我们的用户,那么可以%在命令中使用而不是特定的IP地址。以下是如何编辑现有用
户以便可以从任何IP访问:
mysql> 将用户'linuxconfig'@'localhost'重命名为'linuxconfig'@'%';
以下是如何创建一个可以从任何 IP 地址访问的新用户:
mysql> 创建用户 'linuxconfig'@'%' 由 'password_here' 标识;
这里的所有都是它的。授予我们的用户对一个或多个数据库的访问权限后,我们将能够使用帐户凭据远程访问数据库。
在本教程中,我们了解了如何允许远程连接到Linux系统上的MySQL服务。这是一个由三个部分组成的过程:使服务可访
问、允许通过防火墙进行连接以及创建可访问的MySQL帐户。由于MySQL在所有发行版中的工作原理基本相同,因此这
些步骤应该适用于每个人。