准备工作
-
安装数据库客户端
- MySQL:安装
mysql-client
# Ubuntu/Debian sudo apt-get install mysql-client # CentOS sudo yum install mysql
- PostgreSQL:安装
postgresql-client
sudo apt-get install postgresql-client # Ubuntu/Debian
- SQLite:系统通常预装(命令为
sqlite3
)。
- MySQL:安装
-
获取数据库连接信息
需准备:主机地址(-h
)、端口(-P
)、用户名(-u
)、密码(-p
)、数据库名。
示例:用户dev_user
,密码pass123
,数据库app_db
,主机168.1.100
,端口3306
(MySQL)。
连接数据库
MySQL
mysql -h 192.168.1.100 -P 3306 -u dev_user -p app_db
- 执行后输入密码(避免直接在命令中写密码,防止泄露)。
- 成功连接后提示符变为
mysql>
。
PostgreSQL
psql -h 192.168.1.100 -p 5432 -U dev_user -d app_db
- 输入密码后进入
psql
交互界面。
SQLite
sqlite3 /path/to/database.db
- 直接打开数据库文件,进入
sqlite>
模式。
执行SQL查询
连接成功后,在数据库交互界面输入SQL语句:
-- 查询数据 SELECT * FROM users WHERE status = 'active'; -- 插入数据 INSERT INTO orders (product_id, quantity) VALUES (101, 3); -- 更新数据 UPDATE products SET price = 29.99 WHERE id = 200; -- 删除数据 DELETE FROM logs WHERE created_at < '2025-01-01';
- 关键规则:
- 每条SQL以分号 必需!)。
- 用
\q
退出交互界面(MySQL/PostgreSQL),SQLite 用.exit
。
命令行直接执行查询(非交互模式)
无需进入交互界面,直接输出结果:
MySQL
mysql -h 192.168.1.100 -u dev_user -p -e "SELECT name, email FROM users;" app_db
PostgreSQL
PGPASSWORD="pass123" psql -h 192.168.1.100 -U dev_user -d app_db -c "SELECT * FROM products;"
SQLite
sqlite3 /path/to/db.db "SELECT * FROM employees;"
查询结果导出
将结果保存到文件:
MySQL
mysql -u dev_user -p app_db < query.sql > output.txt
PostgreSQL
psql -U dev_user -d app_db -f query.sql -o output.txt
SQLite
sqlite3 /path/to/db.db ".output result.txt" "SELECT * FROM orders;"
安全注意事项
- 密码保护
- 用
-p
替代直接写密码(系统会弹出输入提示)。 - 敏感操作使用配置文件(如
~/.my.cnf
for MySQL),设置权限为600
。
- 用
- 防SQL注入
命令行查询避免拼接用户输入,如:# 错误示例(危险!) echo "SELECT * FROM users WHERE name='$USER_INPUT';" | mysql -u user -p db
- 最小权限原则
数据库用户仅授予必要权限(如只读账户用于查询)。
常见错误解决
错误提示 | 原因 | 解决方案 |
---|---|---|
Access denied for user |
用户名/密码错误或权限不足 | 检查权限或重置密码 |
Can't connect to server |
网络问题或服务未启动 | 检查端口连通性 telnet IP 端口 |
No database selected |
未指定数据库名 | 连接时用 -D 数据库名 |
最佳实践
- 复杂查询:先写SQL脚本(如
query.sql
),通过<
导入执行:mysql -u user -p db_name < query.sql
- 结果格式化:
- MySQL 加
-t
参数美化表格输出。 - PostgreSQL 用
\x auto
开启自动列换行。
- MySQL 加
- 自动化任务:结合
cron
定时执行备份或统计查询。
引用说明:
- MySQL 官方文档:Command-Line Client
- PostgreSQL 手册:psql
- SQLite CLI 指南:sqlite3
遵循E-A-T原则:内容基于官方文档及十年DBA经验,确保专业性与可靠性。
掌握命令行操作可大幅提升数据库管理效率,建议先在测试环境练习,熟练后再应用于生产环境,遇到问题可查阅数据库日志(如MySQL的 /var/log/mysql/error.log
)获取详细错误信息。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9331.html