在Linux系统中远程连接数据库是常见的运维操作,不同数据库类型(如MySQL、PostgreSQL、MongoDB等)使用的命令和工具略有差异,但核心流程均涉及客户端安装、参数配置及权限验证,以下将详细讲解主流数据库的远程连接命令、参数说明及注意事项,并辅以表格对比关键信息,最后附相关FAQs。

MySQL/MariaDB远程连接命令
MySQL和MariaDB作为关系型数据库,常用mysql
命令行工具进行连接,基本语法为:
mysql -h 主机地址 -P 端口号 -u 用户名 -p密码 -D 数据库名
参数说明:
-h
:数据库服务器IP地址或域名(如168.1.100
或db.example.com
);-P
:端口号,MySQL默认为3306
,若使用非默认端口需明确指定;-u
:数据库用户名(如root
或自定义用户);-p
:密码,若直接在命令中写-p密码
,密码会明文显示在命令历史中,建议仅输入-p
后回车,在交互界面输入密码更安全;-D
:指定连接后默认操作的数据库,可选参数。
示例:
# 连接IP为192.168.1.100、端口3306的MySQL服务器,用户名为admin,密码通过交互输入 mysql -h 192.168.1.100 -P 3306 -u admin -p # 连接并指定使用test_db数据库 mysql -h 192.168.1.100 -u admin -ptest_db -p123456
注意事项:
- 确保数据库服务器允许远程连接(修改
my.cnf
配置文件,bind-address=0.0.0.0
表示允许所有IP连接,或指定特定IP); - 授权远程用户:登录数据库后执行
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'password';
(表示所有IP,可替换为特定IP),并执行FLUSH PRIVILEGES;
刷新权限; - 防火墙需开放MySQL端口(如
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
或firewall-cmd --add-port=3306/tcp --permanent
)。
PostgreSQL远程连接命令
PostgreSQL使用psql
工具连接,基本语法为:
psql -h 主机地址 -p 端口号 -U 用户名 -d 数据库名 -W
参数说明:

-h
:数据库服务器地址;-p
:端口号,PostgreSQL默认为5432
;-U
:用户名;-d
:数据库名;-W
:强制提示输入密码,避免明文传递。
示例:
# 连接PostgreSQL服务器,用户为postgres,密码交互输入 psql -h 192.168.1.100 -p 5432 -U postgres -W # 连接并指定使用mydb数据库 psql -h 192.168.1.100 -U postgres -d mydb -W
注意事项:
- 修改
pg_hba.conf
文件,添加远程连接规则(如host all all 0.0.0.0/0 md5
,表示所有IP可通过md5加密密码连接); - 修改
postgresql.conf
文件,设置listen_addresses = '*'
; - 授权用户:执行
CREATE USER admin WITH PASSWORD 'password';
创建用户,GRANT ALL PRIVILEGES ON DATABASE mydb TO admin;
授权; - 防火墙开放
5432
端口。
MongoDB远程连接命令
MongoDB是NoSQL数据库,使用mongo
或mongosh
(新版)命令连接,语法为:
mongo 主机地址:端口号/数据库名 --username 用户名 --password 密码 --authenticationDatabase 认证数据库
参数说明:
主机地址:端口号
:如168.1.100:27017
,默认端口27017
;/数据库名
:指定连接的数据库,可选;--username
、--password
:认证信息;--authenticationDatabase
:认证数据库,通常为admin
。
示例(使用mongosh):

# 连接MongoDB服务器,认证数据库为admin mongosh 192.168.1.100:27017 --username admin --password password --authenticationDatabase admin # 连接并指定使用mydb数据库 mongosh 192.168.1.100:27017/mydb -u admin -p password --authenticationDatabase admin
注意事项:
- 修改
mongod.conf
配置文件,设置bindIp: 0.0.0.0
允许远程连接; - 创建用户并授权:在
admin
数据库执行db.createUser({user: "admin", pwd: "password", roles: ["root"]})
; - 防火墙开放
27017
端口。
主流数据库远程连接命令对比表
数据库类型 | 客户端工具 | 基本语法示例 | 默认端口 | 关键配置文件 |
---|---|---|---|---|
MySQL/MariaDB | mysql | mysql -h 192.168.1.100 -P 3306 -u admin -p |
3306 | my.cnf (MySQL) 或 mariadb.cnf (MariaDB) |
PostgreSQL | psql | psql -h 192.168.1.100 -p 5432 -U postgres -W |
5432 | postgresql.conf、pg_hba.conf |
MongoDB | mongosh | mongosh 192.168.1.100:27017 --username admin --password password |
27017 | mongod.conf |
通用注意事项
- 网络安全:避免使用公网IP直接暴露数据库,可通过VPN或内网穿透工具(如FRP)访问;
- 密码复杂度:设置强密码并定期更换,避免使用默认用户名(如MySQL的
root
); - 连接超时:若连接频繁断开,可调整数据库的超时参数(如MySQL的
wait_timeout
); - 日志记录:开启数据库日志,记录远程连接操作以便排查问题。
相关问答FAQs
Q1: 连接MySQL时提示“Access denied for user 'admin'@'192.168.1.101'”,如何解决?
A: 此错误通常为权限不足,需检查以下三点:
- 确认用户
admin
是否存在,若不存在需执行CREATE USER 'admin'@'%' IDENTIFIED BY 'password';
创建; - 确认用户是否有远程访问权限,执行
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
并FLUSH PRIVILEGES;
; - 检查
user
表中Host
字段是否为(允许所有IP)或指定IP(如168.1.%
),可通过SELECT User, Host FROM mysql.user;
查看。
Q2: PostgreSQL远程连接时提示“FATAL: no pg_hba.conf entry for host”,如何处理?
A: 该错误表明pg_hba.conf
中未配置远程连接规则,解决步骤:
- 编辑
pg_hba.conf
文件(通常位于/var/lib/pgsql/data/
或/etc/postgresql/版本号/main/
),添加规则如host all all 192.168.1.0/24 md5
(允许168.1.0/24
网段通过md5密码连接); - 重启PostgreSQL服务:
systemctl restart postgresql
; - 确认
postgresql.conf
中listen_addresses
设置为或'0.0.0.0'
,并重启服务生效。