MySQL MariaDB 不允许远程连接解决方案
MySQL MariaDB 是两个常用的关系型数据库管理系统,常用于处理大量的数据。例如,在一个团队中可以共享数据库来处理组织中所有的数据。在分布式环境中,多个用户可以从不同的位置访问MySQL或MariaDB数据库。然而,有时您可能需要通过网络破坏壁垒,例如,访问MySQL MariaDB服务器或数据库。在这种情况下,您可能遇到了MySQL MariaDB不允许外部与本地连接的问题。 这个问题可以通过下文的方法来解决。
阅读更多:MySQL 教程
确认 MySQL 或 MariaDB 服务正常运行
在您连接之前,请确保 MySQL 或 MariaDB 服务正在运行。您可以通过以下两种方式来检查:
- 在命令行中运行以下命令:
service mysql status
如果输出为“Active: active(running)”表示服务正在运行。
- 在 Xampp 仪表板中检查 MySQL 或 MariaDB 服务是否已启动。
开放数据库的远程访问
默认情况下,MySQL 或 MariaDB 不支持远程访问。为了允许远程连接,您需要修改MySQL或MariaDB配置文件,从而允许从其他计算机的IP地址访问数据库。以下是允许远程连接MySQL 或 MariaDB的文件和相关代码以及实际方式进行修改。
1.修改 my.cnf 文件
打开MySQL或MariaDB的配置文件 my.cnf,并添加以下行。如果已经存在这些行,则请确保它们没有被注释。这里的%允许连接来自的任意IP地址都是开放的。为了确保网络安全,您应该精确地指定访问数据库的IP地址。
[mysqld]
bind-address=0.0.0.0
2.修改 MySQL 或 MariaDB 用户的访问权限
打开MySQL或MariaDB的CLI,然后运行以下命令。您需要提供MySQL或MariaDB的管理员密码。正如上面所提到的,为了确保网络安全,您应该只允许特定IP地址来访问数据库。这里的’root’代表MySQL或MariaDB管理员用户名。您可以将该行替换为实际要授予访问权限的用户名。
GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'password';
在此命令中,’%’允许从任何IP地址访问数据库。为了确保网络安全,您应该使用实际访问数据库的IP地址来代替’%’。
在执行此命令后,请继续执行以下命令以使其立即生效。
FLUSH PRIVILEGES;
3.开放数据库端口(3306)
MySQL运行在默认端口3306。如果您的MySQL或MariaDB服务器位于防火墙后面,请确保已将端口3306添加到防火墙规则中以允许访问。
测试 MySQL 或 MariaDB 的远程连接
一旦您的MySQL或MariaDB服务器已准备好接受来自远程计算机的连接,则可以通过使用MySQL或MariaDB客户端来进行测试。请注意,您需要使用MySQL或MariaDB客户端来连接MySQL或MariaDB服务器。
- 在命令行中使用MySQL咨询:
mysql –h your_mysql_host –u your_username –p
是否连接到 MySQL 服务器:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
- 或使用 MySQL WorkBench:
启动MySQL Werkbencin 和 Connect to Database。
配置如下:
Hostname: (您的数据库主机名或IP地址)
Port: (3306)
Username: (您的MySQL或MariaDB的用户名)
Password: (您的MySQL或MariaDB的密码)
Connection Method:(Standard TCP/IP over SSH)
SSH Hostname:(如果需要SSH,请输入您的服务器SSH主机名或IP地址。否则,可以留空。)
SSH Username:(如果需要SSH,请输入您的服务器SSH用户名。否则,可以留空。)
SSH Password:(如果需要SSH,请输入您的服务器SSH密码。否则,可以留空。)
然后,单击“Test Connection”以测试MySQL或MariaDB服务器是否可以接受来自远程计算机的连接。
使用云服务
如果您使用云服务提供商提供的MySQL或MariaDB,那么通常情况下,您将无法访问MySQL或MariaDB服务器或数据库,除非您使用正确的方法。以下是一些流行的云服务提供商的方法。
Amazon Web Services (AWS)
如果您使用AWS提供的MySQL或MariaDB服务,那么您需要:
- 在 AWS 控制台中创建一个新的安全组,并添加出站 TCP 协议。
在 AWS 控制台中,请选择在其中有您的 MySQL 或 MariaDB 实例的安全组。添加以下规则:
Type: MYSQL/Aurora
Protocol: TCP
Port Range: 3306
Destination: 0.0.0.0/0 (允许远程连接)
-
更改MySQL或MariaDB实例的端点访问控制列表(ACL)以允许网络访问。
在 AWS 控制台中,选择您的 MySQL 或 MariaDB 实例,然后转到“端点”选项卡并更改您的访问控制列表(ACL)以允许发起外部请求的 IP 地址。
Google Cloud Platform (GCP)
如果您使用GCP提供的MySQL或MariaDB服务,那么您需要:
- 在 GCP 控制台中打开 MySQL 或 MariaDB 的端口(3306)。
在 GCP 控制台中,选择您的 MySQL 或 MariaDB 实例,单击“编辑”并添加以下规则:
gcloud compute --project "YOUR_PROJECT" firewall-rules create "rule-allow-mysql" --allow tcp:3306 --source-ranges="IP_ADDRESS"
- 在MySQL或MariaDB实例设置中启用IPv4网络接口。
Microsoft Azure
如果您使用Azure提供的MySQL或MariaDB服务,那么您需要:
- 在 Azure 控制台中创建一个新的安全组,并添加出站TCP协议。
在 Azure 控制台中,创建一个新的安全组并添加以下规则:
Name: MySQL
Protocol: TCP
Port range: 3306
Source: Any
Destination: Any
- 在MySQL或MariaDB实例设置中启用直接传输。
总结
在MySQL或MariaDB不允许远程连接之前,请确保MySQL或MariaDB服务正在运行。你可以修改MySQL或MariaDB的配置文件,开放远程访问。还可以测试MySQL或MariaDB的远程连接,或通过云服务提供商的特定方法完成。在修改MySQL或MariaDB设置之前,请务必了解网络安全,并始终最小化数据泄露或损坏的风险。