数据库连接命令行是数据库管理和开发中不可或缺的工具,它允许用户通过文本界面直接与数据库交互,执行查询、管理数据、配置参数等操作,与图形化界面工具相比,命令行操作更高效、更灵活,尤其适合自动化脚本、远程服务器管理和批量数据处理场景,本文将详细介绍主流数据库(如MySQL、PostgreSQL、Oracle、SQL Server)的命令行连接方法、常用参数及实用技巧。

MySQL数据库连接命令行
MySQL是最流行的开源关系型数据库之一,其命令行工具为mysql
,基本连接语法如下:
mysql -h 主机名 -P 端口号 -u 用户名 -p 数据库名
-h
:指定数据库服务器主机名或IP地址,默认为localhost
。-P
:端口号,MySQL默认为3306
,若使用默认值可省略该参数。-u
:用户名,需具有访问目标数据库的权限。-p
:提示输入密码,若在命令中直接写密码(如-p123456
)会存在安全风险,建议交互式输入。数据库名
:可选参数,若未指定,则连接后需手动选择数据库。
示例:连接到本地MySQL服务器的testdb
数据库:
mysql -h localhost -P 3306 -u root -p testdb
连接成功后,会显示mysql>
提示符,输入SQL语句后以分号结尾执行,常用命令包括:
SHOW DATABASES;
:列出所有数据库。USE 数据库名;
:切换当前数据库。EXIT;
或QUIT;
:退出连接。
PostgreSQL数据库连接命令行
PostgreSQL的命令行工具为psql
,语法与MySQL类似:

psql -h 主机名 -p 端口号 -U 用户名 -d 数据库名 -W
-h
:主机名,默认为localhost
。-p
:端口号,PostgreSQL默认为5432
。-U
:用户名,默认为当前系统用户。-d
:数据库名,默认为与用户名同名的数据库。-W
:强制输入密码,避免密码以明文形式出现在命令历史中。
示例:连接到远程PostgreSQL服务器的salesdb
数据库:
psql -h 192.168.1.100 -p 5432 -U postgres -d salesdb -W
连接后,psql
提供元命令(以\
开头),如:
\l
:列出所有数据库。\c 数据库名
:切换数据库。\q
:退出。
Oracle数据库连接命令行
Oracle数据库使用sqlplus
工具,语法稍复杂:
sqlplus 用户名/密码@主机名:端口/服务名
用户名/密码
:数据库用户凭据。主机名:端口
:数据库服务器地址和端口(默认1521
)。服务名
:Oracle数据库的标识符,需在tnsnames.ora
文件中配置。
示例:连接到本地Oracle数据库:

sqlplus system/Oracle@localhost:1521/XE
连接后,输入SQL语句无需分号,但需用执行,常用命令:
SHOW USER;
:显示当前用户。EXIT
:退出。
SQL Server数据库连接命令行
SQL Server的命令行工具为sqlcmd
:
sqlcmd -S 主机名,端口 -U 用户名 -P 密码 -d 数据库名
-S
:服务器地址,格式为主机名,端口
,默认端口为1433
。-U
和-P
:用户名和密码,若使用Windows身份验证,可省略-U
和-P
,改用-E
(信任连接)。
示例:连接到本地SQL Server数据库:
sqlcmd -S localhost,1433 -U sa -P P@ssw0rd -d master
连接后,输入GO
执行SQL语句。
通用连接参数与技巧
- 配置文件:为避免频繁输入参数,可配置
.my.cnf
(MySQL)或.pgpass
(PostgreSQL)文件存储连接信息。 - SSL加密:生产环境建议启用SSL,如MySQL的
--ssl-ca
参数。 - 超时设置:通过
--connect-timeout
(MySQL)或--timeout
(PostgreSQL)避免长时间等待。 - 输出重定向:将查询结果导出至文件,如
mysql -e "SELECT * FROM users;" > result.txt
。
数据库连接命令行参数对比表
数据库 | 工具名 | 主机参数 | 端口参数 | 用户参数 | 密码参数 | 数据库名参数 |
---|---|---|---|---|---|---|
MySQL | mysql | -h | -P | -u | -p | 无(需USE命令) |
PostgreSQL | psql | -h | -p | -U | -W | -d |
Oracle | sqlplus | 无(@符号中指定) | 无(@符号中指定) | 用户名/密码 | 无(密码在用户名后) | 无(@符号中指定) |
SQL Server | sqlcmd | -S | 无(包含在-S中) | -U | -P | -d |
相关问答FAQs
问题1:如何解决“Access denied”错误?
解答:该错误通常由用户名、密码错误或权限不足导致,检查用户名拼写,确认密码是否正确,并确保用户具有目标数据库的访问权限,对于MySQL,可尝试mysql -u root -p -h localhost
登录后执行GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'%' IDENTIFIED BY '密码';
授权。
问题2:命令行连接时如何指定字符集?
解答:不同数据库工具支持不同参数,MySQL可通过--default-character-set=utf8mb4
指定,如mysql --default-character-set=utf8mb4 -u root -p
;PostgreSQL可在连接后执行SET client_encoding='UTF8';
;SQL Server需在连接字符串中添加charset=UTF-8
,如sqlcmd -S localhost,1433 -U sa -P P@ssw0rd -d master -charset UTF-8
。