首先我们来说说什么是远程连接MySQL?远程连接MySQL和本地连接MySQL有什么不同?
远程连接MySQL指的是使用MySQL数据库管理系统,通过网络从一台计算机连接到另一台运行MySQL服务器的远程计算机或设备上的MySQL数据库。当你使用远程连接MySQL时,你可以利用MySQL客户端工具(如MySQL命令行客户端、MySQL Workbench等)通过网络连接到托管数据库的远程服务器,然后执行数据库操作,如查询、插入、更新或删除数据等。
远程连接MySQL需要具备以下要素:
本地连接MySQL和远程连接MySQL之间的主要区别在于连接的位置和方式:
连接位置:
方式:
需要远程连接MySQL数据库时,需要确保MySQL服务器允许远程连接,并且有相应的权限进行连接。接下来我们就一步一步的去开放对应的权限,然后进行数据库的远程连接。
MySQL默认情况下可能不允许远程连接,需要进行配置。在MySQL服务器的配置文件中(通常是 my.cnf
或 my.ini
),找到并编辑 bind-address
属性,将其设置为服务器的公共IP地址或者 0.0.0.0
(允许所有地址连接)。
bind-address = 0.0.0.0
bind-address
属性用于指定MySQL服务器绑定的网络接口地址。默认情况下,MySQL服务器配置文件中的 bind-address
属性可能设置为 127.0.0.1
或 localhost
,这表示MySQL仅监听来自本地主机(即服务器自身)的连接请求,而不接受来自其他主机的连接。如果要允许远程主机连接到MySQL服务器,需要将 bind-address
属性设置为服务器的公共IP地址或 0.0.0.0
,以允许所有地址的连接。这样做允许了MySQL服务器监听来自网络上其他设备的连接请求,允许远程连接。
确保你希望远程连接的用户具有从远程主机连接的权限。在MySQL中,使用如下命令为用户授权:
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'远程主机IP' IDENTIFIED BY '密码' WITH GRANT OPTION;
远程主机IP如果写%,那么所有IP地址都可以连接,可以使用localhost、服务器IP地址、127.0.0.1进行连接;
如果只写localhost,那就只能使用localhost进行连接,写了服务器IP地址,那就只能使用服务器IP地址连接,写了127.0.0.1,那就只能使用127.0.0.1连接;
ALL PRIVILEGES
是MySQL中最高级别的权限之一,赋予用户对所有数据库和表执行任何操作的权限。授予用户 ALL PRIVILEGES
权限将使其具有管理数据库、创建、修改和删除数据库以及对所有表执行各种操作的权限。除了 ALL PRIVILEGES
外,MySQL中还有其他一些权限,这些权限允许用户执行特定类型的操作。以下是一些常见的MySQL权限:
在实际使用中,应根据安全性和实际需要,为用户分配最小必要的权限,以避免给予过多权限导致安全隐患。
授权后需要刷新MySQL权限使其生效。
FLUSH PRIVILEGES;
确保服务器的防火墙允许MySQL的连接端口(默认端口为3306)通过。要允许Linux系统防火墙通过3306端口进行连接,可以使用 iptables
或者更现代化的工具如 firewalld
(在大多数最新的Linux发行版中都有)来配置。
sudo iptables -L
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
这条命令允许TCP流量通过3306端口。
sudo iptables-save > /etc/iptables/rules.v4
sudo firewall-cmd --state
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
这将永久地允许TCP流量通过3306端口。
sudo firewall-cmd --reload
无论是使用 iptables 还是 firewalld,都需要在确认更改后保存设置,并确保3306端口是允许通信的。这样,你的MySQL服务器就可以接受来自其他设备的连接请求了。
注意:如果你是使用
root
账户,那么在命令面前可以不用加sudo
,如果不是root
账户那就需要加sudo
,加了sudo
的命令都会以管理员的身份运行
mysql -u 用户名 -p -h 服务器IP地址
输入密码后即可连接
请注意,远程连接MySQL存在安全风险,因此应该谨慎设置,并且使用安全措施(如限制可访问的IP范围、使用SSH隧道等)来确保连接的安全性。
以上内容是对于Linux服务器的,如果是Windows服务器,方法都是一样的,只是配置防火墙的内容不一样。
作者:rm -rf *
链接:远程连接MySQL数据库-挨踢星球
来源:挨踢星球
著作权归作者所有。所有转载请注明出处。