商城首页欢迎来到中国正版软件门户

您的位置:首页 >宝塔面板如何开启MySQL远程访问权限_修改访问权限为所有人并放行3306端口

宝塔面板如何开启MySQL远程访问权限_修改访问权限为所有人并放行3306端口

  发布于2026-04-21 阅读(0)

扫一扫,手机访问

MySQL远程连接需四步:改用户权限为%、放行宝塔防火墙3306端口、云服务器安全组同步放行、修改my.cnf中bind-address为0.0.0.0并重启服务;若仍失败,检查认证插件兼容性。

宝塔面板如何开启MySQL远程访问权限_修改访问权限为所有人并放行3306端口

MySQL 用户权限没开远程,连都连不上

很多朋友第一次配置远程连接时,都会卡在第一步。默认安装的 MySQL,无论是独立安装还是通过宝塔面板一键部署,其用户权限通常只允许 localhost127.0.0.1 进行本地连接。这时候,外部 IP 尝试连接会直接收到一个明确的拒绝信息:Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server。需要明确的是,这并非防火墙在作祟,而是 MySQL 自身的权限机制在发挥作用。

所以,操作顺序至关重要:必须先调整用户权限,再去处理端口放行。顺序一旦颠倒,就是白费功夫。

  • 最直观的方法是使用宝塔面板:进入「数据库」模块,找到目标数据库,点击对应的「root」或目标用户名,选择「修改权限」。关键一步是将「访问权限」从默认的 localhost 修改为 %(这个符号代表允许来自任意主机的连接)。
  • 如果在宝塔界面找不到这个选项,那很可能该用户是通过命令行创建的。这时就需要手动执行 SQL 命令来授权:
    GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
  • 完成修改后,别忘了重启 MySQL 服务(在宝塔界面点击「重启」按钮),否则新的权限设置不会生效。

宝塔自带防火墙默认拦 3306,得手动放行

解决了权限问题,只是闯过了第一关。宝塔面板自带的防火墙,在「安全」→ 「防火墙」设置中,默认策略是封禁所有非白名单端口,而 MySQL 的标准端口 3306 恰恰就在这个黑名单里。如果不放行,外部的 TCP 连接请求在系统层面就会被拦截,根本传递不到 MySQL 服务进程。

操作路径其实很清晰:

  • 在宝塔左侧菜单栏点击「安全」,进入「防火墙」页面,找到「放行端口」选项。
  • 输入端口号 3306,协议选择 TCP,然后点击「放行」。
  • 确认状态栏显示为「已放行」,同时检查一下避免重复添加(重复操作虽不会报错,但确实没有必要)。
  • 这里有个常见的“坑”:如果您的服务器部署在阿里云、腾讯云等云平台上,除了宝塔的系统层防火墙,还必须同步在云服务商的安全组规则中放行 3306 端口。云平台的安全组是网络层的防护,两者缺一不可。

MySQL 配置文件绑定了 127.0.0.1,远程连不上

到了这一步,权限和端口都畅通了,但连接依然失败?问题可能藏在更深层的配置里。尤其是宝塔 8.x 版本之后集成的 MySQL 8.0+,其配置文件 /www/server/mysql/etc/my.cnf 中,默认可能包含了 bind-address = 127.0.0.1 这一行。这个配置会让 MySQL 服务只监听本地的回环地址,外部网络请求自然也就石沉大海了。

解决方法依然是修改配置并重启服务:

  • 使用宝塔的文件管理器,打开上述路径的 my.cnf 文件。
  • 搜索 bind-address 这一项,将其修改为 bind-address = 0.0.0.0(或者直接删除这一行,MySQL 默认会监听所有网络接口)。
  • 保存文件后,回到宝塔的「软件商店」,找到 MySQL 服务,点击「重启」。
  • 如何验证是否生效?可以通过 SSH 连接到服务器,执行命令 netstat -tlnp | grep :3306。如果看到监听地址显示为 0.0.0.0:3306*:3306,才算是大功告成。

连上了但被拒绝,检查是不是密码认证插件不兼容

有时候,连接能建立,但最终登录却被拒绝,并伴随报错:Client does not support authentication protocol requested by server。这通常是 MySQL 8.0 版本引入的新默认认证插件 caching_sha2_password 惹的祸。许多旧的客户端(例如某些老版本的 PHP 扩展或 Na vicat)尚未支持该协议,它们只认传统的 mysql_native_password

针对此问题,有一个临时的解决方案(但请注意,长期对 root 用户使用此方法不推荐):

  • 首先登录到 MySQL 命令行:mysql -u root -p
  • 执行以下命令修改用户的认证方式:
    ALTER USER 'your_user'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
  • 之后别忘了执行 FLUSH PRIVILEGES; 刷新权限。
  • 需要特别强调的是,如果是为了远程管理,更安全的做法不是直接修改 root 用户的认证方式,而是创建一个新的专用用户并赋予相应权限,这样可以有效降低安全风险。

最后必须提醒的是,打通远程连接固然重要,但安全边界绝不能松懈。将用户权限设为 % 和直接对外暴露 3306 端口,本身就会引入风险。在生产环境中,至少应该将 % 替换为具体的、可信的 IP 地址段。更进一步,考虑通过 SSH 隧道、跳板机或数据库中间件来进行访问隔离,这才是兼顾便捷与安全的实践之道。

本文转载于:https://www.php.cn/faq/2313465.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注