非root用户用DBeaver远程无密码连MariaDB失败,SSH可正常访问
解决DBeaver通过SSH隧道无密码连接MariaDB的问题
1. 确认服务器端的免密配置逻辑
你SSH登录服务器后能无密码访问MariaDB,一般是因为服务器用户目录下的~/.my.cnf(或~/.mariadb.cnf)配置了客户端免密参数。先登录服务器查看这个文件内容:
cat ~/.my.cnf
正常会包含类似配置:
[client] user=你的数据库用户名 password=对应密码
但DBeaver通过SSH隧道连接时,不会自动读取服务器上的这个配置文件,需要手动在DBeaver里同步配置。
2. 在DBeaver中配置免密参数
打开已配置好SSH隧道的数据库连接窗口:
- 切换到「连接设置」→「高级」标签页
- 在「属性」列表中添加两个参数:
- 键:
user,值:你的数据库用户名 - 键:
password,值:对应密码
或者直接在「主」标签页填写用户名和密码,DBeaver会自动将这些参数传递给数据库客户端。
- 键:
3. 检查数据库用户的连接权限
确保你的数据库用户允许从localhost或127.0.0.1连接(SSH隧道相当于本地连接服务器的数据库):
- 登录服务器的MariaDB,执行命令查看用户权限:
如果用户的SELECT user, host FROM mysql.user WHERE user='你的用户名';host是localhost/127.0.0.1,符合隧道连接场景;如果是特定IP,要么调整用户权限,要么确认隧道的本地映射端口匹配:GRANT ALL PRIVILEGES ON 你的数据库名.* TO '你的用户名'@'localhost'; FLUSH PRIVILEGES;
4. 验证SSH隧道的连通性
先手动用命令行测试,排除DBeaver的配置问题:
- 本地终端执行SSH隧道命令:
ssh -L 3306:localhost:3306 你的服务器用户名@服务器IP - 新开终端用本地MySQL客户端连接:
如果这里需要密码,说明服务器端的免密配置仅对特定用户生效(比如服务器的root用户),需要给你的数据库用户配置对应免密;如果能无密码登录,回到DBeaver检查参数是否填写正确。mysql -u 你的数据库用户名
内容的提问来源于stack exchange,提问作者Francisco Cortes
相关产品推荐
相关产品推荐

