无法通过SSH隧道连接MySQL但本地连接正常,求解决方法
解决SSH隧道连接MySQL时
Access denied for 'bitrix0'@'::1'的问题 问题原因
本地连接MySQL正常,但通过SSH隧道连接时出现Access denied for user 'bitrix0'@'::1' (using password: YES)错误,核心原因是:
- 你的
bitrix0用户仅被授权从localhost(IPv4本地回环或UNIX套接字)访问 - SSH隧道转发连接时,MySQL会将请求识别为来自服务器的IPv6本地回环地址
::1,而该地址不在bitrix0的授权host列表中
解决方案
1. 给bitrix0用户添加::1访问权限
通过本地已有的MySQL连接执行以下SQL:
-- 授权所有数据库权限(可根据需求替换为指定数据库,如`your_db.*`) GRANT ALL PRIVILEGES ON *.* TO 'bitrix0'@'::1' IDENTIFIED BY '你的bitrix0用户密码'; -- 刷新权限使设置生效 FLUSH PRIVILEGES;
2. 可选:授权所有本地回环地址访问
如果需要兼容IPv4和IPv6的本地连接,可同时授权:
GRANT ALL PRIVILEGES ON *.* TO 'bitrix0'@'127.0.0.1' IDENTIFIED BY '你的bitrix0用户密码'; GRANT ALL PRIVILEGES ON *.* TO 'bitrix0'@'::1' IDENTIFIED BY '你的bitrix0用户密码'; FLUSH PRIVILEGES;
3. DBeaver连接配置检查
确保DBeaver的SSH隧道和MySQL连接设置正确:
- 进入MySQL连接的SSH标签,勾选「使用SSH隧道」,填写SSH服务器的地址、端口、用户名及认证方式
- 切换到主标签,MySQL主机地址填写
127.0.0.1(强制使用IPv4,避免触发IPv6的::1识别),端口保持MySQL默认的3306 - 填写
bitrix0作为用户名,对应密码
4. 验证权限设置
执行以下SQL确认权限已生效:
SELECT user, host FROM mysql.user WHERE user = 'bitrix0';
结果中应包含bitrix0对应的localhost、127.0.0.1和::1条目。
内容的提问来源于stack exchange,提问作者Юрий Глущенко
相关产品推荐
相关产品推荐

