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