在Ubuntu服务器中如何允许远程访问MySQL

时间:2020-07-27 12:59:14  来源:igfitidea点击:

在本教程中,我们将学习如何允许远程访问Ubuntu Server中的MySQL服务器。
对于教程,我正在使用Ubuntu Server 20.04,但我们可以在任何先前版本的Ubuntu Linux上使用它。

在Ubuntu启用MySQL Server远程连接

默认情况下,Ubuntu上的MySQL Server在本地接口上运行,这意味着不允许远程访问MySQL服务器。
要启用到MySQL Server的远程连接,我们需要更改MySQL配置文件中的“绑定地址”的值。

首先,打开“/etc/mysql/mysql.conf.d/mysqld.cnf”文件(/etc/mysql/my.cnf在ubuntu 14.04和早期版本中)。

vim /etc/mysql/mysql.conf.d/mysqld.cnf

在'[mysqld]'下找到下面行,

bind-address            = 127.0.0.1

并改成

bind-address            = 0.0.0.0

然后,重新启动Ubuntu MySQL服务器:

systemctl restart mysql.service

现在Ubuntu Server将允许远程访问MySQL服务器,但仍然需要配置MySQL用户允许从任何主机访问。

例如,当我们创建MySQL用户时,我们应该允许从任何主机访问。

CREATE USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

或者允许特定的IP地址,

CREATE USER 'username'@'192.168.1.100' IDENTIFIED WITH mysql_native_password BY 'password';

排除ubuntu mysql远程访问

要确保在所有接口上侦听MySQL Server,请按如下方式运行“netstat”命令。

netstat -tulnp | grep mysql

输出应显示MySQL Server在套接字上运行0.0.0.0:3306'而不是'127.0.0.1:3306'。

我们还可以尝试从远程主机“Telnet”到MySQL端口3306.
例如,如果Ubuntu Server的IP地址为192.168.1.10,则从远程主机执行,

telnet 192.168.1.10 3306

我们还可以从远程计算机运行“nmap”命令,以检查MySQL端口3306是否已打开到远程主机。

nmap 192.168.1.10

输出应列出MySQL端口3306,状态应打开。
如果MySQL端口3306未打开,则存在阻止端口3306的防火墙。