You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu环境下MariaDB可通过命令行/PHP连接但DBeaver连接被拒绝求助

解决DBeaver无法连接本地MariaDB的问题

看起来你遇到的问题很典型——本地命令行和PHP能正常连接,但图形工具连不上,大概率是网络监听配置或者连接方式/权限的问题,咱们一步步排查:

1. 先检查MariaDB的TCP监听状态

命令行和PHP默认可能用的是Unix socket连接(不走3306端口),而DBeaver默认尝试TCP连接,如果MariaDB没开启TCP监听,就会报连接拒绝。

  • 先执行这个命令查看MariaDB是否在监听3306端口:

    netstat -tulpn | grep mysqld
    

    如果输出里没有127.0.0.1:3306或者0.0.0.0:3306,说明TCP监听被禁用了。

  • 打开MariaDB的配置文件(通常是/etc/mysql/mariadb.conf.d/50-server.cnf或者/etc/my.cnf),检查这两个参数:

    • 确保skip-networking被注释掉(前面加#),这个参数会完全禁用TCP连接
    • 确保bind-address设置为127.0.0.1(允许本地TCP连接),如果不需要远程连接,127.0.0.1就足够

修改后重启MariaDB:

sudo systemctl restart mariadb

再用netstat确认端口已经在监听。

2. 调整DBeaver的连接设置

如果MariaDB已经开启TCP监听,那可能是DBeaver的连接细节没配置对:

  • 试试把主机从localhost改成127.0.0.1:在MySQL/MariaDB的规则里,localhost默认优先走socket,而127.0.0.1会强制走TCP连接,换这个地址可能直接解决问题。
  • 或者配置socket连接:如果不想开启TCP监听,在DBeaver的连接设置里,找到「高级」选项卡,找到「socket」参数,填入MariaDB的socket路径(通常是/var/run/mysqld/mysqld.sock,可以在命令行执行mysql_config --socket获取准确路径),保存后重试连接。

3. 检查用户权限

你的root账号可能只有socket连接的权限(root@localhost),没有TCP连接的权限(root@127.0.0.1):

  • 登录MariaDB命令行:
    mysql -u root -p
    
  • 查看用户权限:
    SELECT user, host FROM mysql.user;
    
    如果root的host只有localhost,那需要给root@127.0.0.1授权:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '你的root密码' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
    然后用DBeaver连接127.0.0.1试试。

按这个顺序排查,应该能解决连接拒绝的问题。

内容的提问来源于stack exchange,提问作者user101289

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:26:43