MySQL远程连接怎么弄,其实有两种方法可以试试看,设置起来也不难
- 问答
- 2026-01-15 03:37:52
- 3
MySQL数据库在安装后,默认情况下是只允许本机(也就是安装MySQL的那台电脑)连接的,这是一种安全措施,防止任何来自外部网络的未知访问,当你说“远程连接”时,本质上是在修改MySQL的配置,告诉它:“请允许来自其他电脑的连接请求,并且我指定某些用户可以从哪些电脑连过来。”
这里有两种主流且实用的方法,你可以根据你的情况和喜好选择一种,两种方法都需要你拥有操作MySQL的权限,通常意味着你需要能以root用户或具有管理员权限的用户登录到MySQL。
修改MySQL的绑定地址和用户权限(传统直接的方法)
这个方法是最经典、最常被提及的,它主要分为三个步骤:修改MySQL配置、设置用户权限、开放服务器防火墙端口。
第一步:找到并修改MySQL的配置文件。
MySQL有一个名为 my.cnf 的配置文件(在Windows系统上可能是 my.ini),这个文件的位置因操作系统和安装方式而异。
- 在Linux上,常见位置是
/etc/mysql/my.cnf或/etc/my.cnf。 - 在Windows上,它可能在你MySQL的安装目录下,
C:\Program Files\MySQL\MySQL Server 8.0\my.ini。
你需要用文本编辑器(如Notepad++, Vim等)打开这个文件,记得要用管理员权限打开,在文件中找到 [mysqld] 这个段落,寻找一行叫做 bind-address 的配置,它很可能长这样:
bind-address = 127.0.0.1
或者
bind-address = localhost
这行配置的意思就是告诉MySQL只监听本机(127.0.0.1就是本机回环地址)的连接,要允许远程连接,你需要把这行注释掉(在行首加一个 号),或者将其修改为 0.0.0。0.0.0 表示监听所有网络接口的连接。
修改后应该是:
# bind-address = 127.0.0.1
或者
bind-address = 0.0.0.0
保存文件,然后重启MySQL服务让配置生效,重启服务的方法也因系统而异,比如在Linux上可以用 sudo systemctl restart mysql,在Windows上可以在服务管理器中找到MySQL服务并重启。
第二步:在MySQL中设置允许远程连接的用户。
光修改配置还不够,MySQL的用户账号本身也有限制,默认情况下,你用类似 root@localhost 创建的账号,只允许从本机登录,你需要创建一个允许从任意主机(或指定主机)连接的用户,或者修改现有用户的连接权限。
登录到MySQL的命令行(在本机操作),然后执行类似下面的SQL命令:

-
创建一个新用户并允许远程连接:
CREATE USER '你的新用户名'@'%' IDENTIFIED BY '一个强密码'; GRANT ALL PRIVILEGES ON *.* TO '你的新用户名'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
这里的关键是 ,它是一个通配符,表示允许从任何IP地址的主机连接,如果你希望只允许从特定IP(比如你办公室的电脑IP)连接,可以把 替换成那个IP地址,
'192.168.1.100'。 -
修改现有用户允许远程连接: 如果你不想创建新用户,想直接用root用户远程连接(虽然从安全角度不推荐),可以修改root用户的host:
UPDATE mysql.user SET host='%' WHERE user='root'; FLUSH PRIVILEGES;
第三步:检查服务器防火墙。
MySQL本身已经准备好了,但你的服务器(尤其是云服务器)通常有防火墙,MySQL默认使用3306端口,你需要在服务器的防火墙规则中,放行3306端口的入站流量,具体操作取决于你用的云服务商(如阿里云、腾讯云的安全组规则)或服务器本身的防火墙软件(如iptables, UFW等)。
完成以上三步后,你应该就可以从远程电脑使用数据库管理工具(如Navicat, DBeaver)或命令行,通过 服务器的IP地址:3306 来连接了。
使用SSH隧道连接(更安全的方法)
如果你觉得直接开放3306端口有点担心安全问题,或者你的云服务器供应商根本不允许你开放3306端口给外网,那么SSH隧道是一个非常棒的选择,这种方法不需要你修改MySQL的 bind-address,也不需要开放3306端口,它的原理可以简单理解为:在你本地电脑和服务器之间建立一条加密的“秘密通道”,你的数据库连接请求通过这条加密通道安全地到达服务器内部,然后再由服务器自己连接自己的MySQL。

这种方法需要你的服务器开启了SSH服务(通常使用22端口),并且你拥有一个能通过SSH登录服务器的账号。
操作步骤如下:
-
在你的本地电脑上建立SSH隧道。 这可以通过命令行工具(如Linux/macOS的终端,Windows的PowerShell或PuTTY)完成。 一个典型的命令看起来像这样:
ssh -L 本地端口:127.0.0.1:3306 你的服务器用户名@你的服务器IP地址 -N让我解释一下这个命令:
-L 本地端口:127.0.0.1:3306:这是端口转发的核心参数,它表示“将本机(你电脑)的某个端口(比如3307)的流量,通过SSH连接,转发到服务器本机(127.0.0.1)的3306端口”。你的服务器用户名@你的服务器IP地址:这是你SSH登录服务器的凭证。-N:表示只建立隧道,不执行远程命令。
你执行:
ssh -L 3307:127.0.0.1:3306 root@123.45.67.89 -N,然后输入root密码。 -
配置你的数据库连接工具。 隧道建立好了,在你的本地数据库管理工具(如Navicat)中,新建一个MySQL连接:
- 主机名或IP地址:填写
0.0.1或localhost。注意,这里不是填你的远程服务器IP! 因为隧道让你的本地3307端口“变成”了远程服务器的3306端口。 - 端口:填写你上面命令中使用的本地端口,
3307。 - 用户名和密码:填写你在MySQL数据库中的用户名和密码(不是SSH的密码,是方法一里提到的那个数据库用户)。
- 主机名或IP地址:填写
这样,当你连接本地的3307端口时,连接实际上通过安全的SSH隧道被送到了远程服务器上,并访问了服务器本地的MySQL服务,这种方法非常安全,因为数据库流量被加密在SSH隧道中,外界看不到,而且你的服务器也无需对外暴露3306端口。
- 方法一更直接,适合在内网环境,或者你对服务器安全有另外的管控措施的情况。
- 方法二更安全,是连接云数据库的首选方法之一,特别适合注重安全或网络环境受限的情况。
你可以根据你的实际需求和 comfort level 来选择适合你的方法,希望这个解释对你有帮助!
本文由酒紫萱于2026-01-15发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/80934.html
