MySQL/MariaDB无法远程连接的解决方法
MySQL和MariaDB是目前Web应用程序中广泛使用的关系型数据库管理系统。它们被设计为本地主机上的数据库系统,因此默认情况下不允许来自远程客户端的连接。但是,有时候,为了特定的需求,你需要让来自远程客户端的连接成为可能。本篇文章将教你如何进行设置。
阅读更多:MySQL 教程
为什么我的MySQL/MariaDB无法远程连接?
在默认情况下,MySQL/MariaDB将其绑定在本地IP地址127.0.0.1(即localhost)上,这意味着只有在本地主机上才能访问该数据库。这是出于安全考虑,以确保只有在安全的环境下才能访问该数据库,并保护你的数据库不受未授权的访问。
如果你需要让来自外部机器的客户端连接到该数据库,你需要在创建用户、授予权限以及设置IP地址限制时进行设置。
怎么样才能允许远程连接?
在进行远程连接之前,必须先确保你的数据库服务器是在运行状态。在Linux系统中,你可以通过以下命令检查:
$ sudo systemctl status mysql
如果你正在运行的不是MySQL而是MariaDB,则将上面的命令中的mysql替换为mariadb。如果服务正在运行,你应该会看到输出类似于以下内容:
mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset
Active: active (running) since Sun 2018-05-27 16:54:14 UTC; 16s ago
接下来,你需要进行以下几个步骤来允许远程连接:
第一步:创建一个新的MySQL or MariaDB用户
如果你无法使用root用户操作数据库,那么你应该创建一个新的用户。你可以使用以下MySQL或MariaDB命令来创建一个新用户,同时授다一个密码:
mysql> CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
在上面的命令中,newuser和password是你自己的用户名和密码,%表示允许该用户从任何地方连接到服务器。
如果你需要限制该用户只能从特定的IP地址上进行连接,则应该将%替换为特定的IP地址或IP地址段。例如,下面的命令表示仅允许来自192.168.1.10的连接:
mysql> CREATE USER 'newuser'@'192.168.1.10' IDENTIFIED BY 'password';
第二步:设置用户权限
接下来,你应该授予新用户来自远程连接主机的访问权限。你可以使用以下MySQL或MariaDB命令来授予此权限:
mysql> GRANT ALL ON *.* TO 'newuser'@'%';
在上面的命令中,.表示该用户对所有数据库和表都拥有完全权限。
如果你需要限制新用户只能访问特定的数据库或表,则可以将.替换为对应的数据库或表名称。例如,下面的命令将只授予newuser用户对test数据库的访问权限:
mysql> GRANT ALL ON test.* TO 'newuser'@'%';
第三步:检查防火墙规则
防火墙,例如UFW、IPtables或阿里云等,通常会阻止来自外部IP地址的连接。如果你使用的是Linux系统的防火墙,你需要为服务开放监听端口。
如果你使用的是Ubuntu系统,则可以运行以下命令开放MySQL服务的默认端口3306:
$ sudo ufw allow 330
如果你使用的是CentOS或Red Hat系统,则可以执行以下命令来开放MySQL服务的默认端口:
$ sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
$ sudo firewall-cmd --reload
注意:如果你使用的是阿里云,则需要在控制台上设置安全组规则中相应端口的入站规则。
第四步:设置MySQL/MariaDB配置文件
最后,你需要编辑MySQL或MariaDB的配置文件以允许来自远程连接的访问。该文件位于/etc/mysql/my.cnf(如果你使用的是MySQL)或/etc/my.cnf.d/server.cnf(如果你使用的是MariaDB)。
找到bind-address关键字,将其注释掉或将其值设置为0.0.0.0,如下所示:
# bind-address = 127.0.0.1
然后保存并退出配置文件。
第五步:重启MySQL/MariaDB服务
你需要重启MySQL或MariaDB服务以使更改生效。你可以使用以下命令重启服务:
$ sudo systemctl restart mysql # or mariadb
总结
在本篇文章中,我们已经了解了如何允许来自远程客户端的连接到MySQL或MariaDB数据库。为了使这些更改生效,你需要创建一个新用户、授予相应的权限、检查防火墙规则、编辑配置文件以及重启服务。当你完成这些步骤后,你的MySQL或MariaDB数据库就可以接受远程连接了!