当 Navicat 无法连接 MySQL/MariaDB/PostgreSQL 等数据库时,可以按照以下步骤进行排查和解决:
检查服务器是否可达
ping 服务器IP地址
或
telnet 服务器IP地址 端口号
检查防火墙设置
检查数据库服务状态
sudo systemctl status mysql
或 sudo systemctl status mariadb
sudo systemctl status postgresql
启动数据库服务
sudo systemctl start mysql/mariadb/postgresql
检查用户名和密码
检查用户权限
-- MySQL/MariaDB
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- PostgreSQL
CREATE USER 用户名 WITH PASSWORD '密码';
GRANT ALL PRIVILEGES ON DATABASE 数据库名 TO 用户名;
MySQL/MariaDB 配置
/etc/mysql/my.cnf
或 /etc/my.cnf
bind-address
不是 127.0.0.1
(如需远程连接)skip-networking
被注释掉PostgreSQL 配置
/etc/postgresql/版本/main/postgresql.conf
listen_addresses = '*'
/etc/postgresql/版本/main/pg_hba.conf
host all all 0.0.0.0/0 md5
检查 Navicat 版本
连接设置
检查数据库日志
/var/log/mysql/error.log
/var/log/postgresql/postgresql-版本-main.log
尝试使用其他客户端连接
使用命令行测试连接
# MySQL/MariaDB
mysql -h 主机名 -u 用户名 -p
# PostgreSQL
psql -h 主机名 -U 用户名 -d 数据库名
检查数据库用户是否允许从指定主机连接
-- MySQL/MariaDB
SELECT host, user FROM mysql.user;
-- PostgreSQL
SELECT usename, client_addr FROM pg_stat_activity;
重置数据库用户密码
-- MySQL/MariaDB
ALTER USER '用户名'@'%' IDENTIFIED BY '新密码';
-- PostgreSQL
ALTER USER 用户名 WITH PASSWORD '新密码';
如果以上方法都无法解决问题,建议提供具体的错误信息以便进一步诊断。