mysql命令-mysql
一、基本连接命令
1. 连接到MySQL服务器
# 基本连接 mysql -u username -p
# 指定主机和端口 mysql -h hostname -P port -u username -p
# 示例 mysql -h localhost -u root -p mysql -h 192.168.1.100 -P 3307 -u admin -p
2. 连接选项详解
-
-u或--user:指定用户名 -
-p或--password:提示输入密码 -
-h或--host:服务器主机名(默认localhost) -
-P或--port:端口号(默认3306) -
-S或--socket:Unix套接字文件 -
--protocol:连接协议(TCP、SOCKET、PIPE等)
二、执行SQL语句
1. 直接执行SQL
# 执行单条SQL语句 mysql -u username -p -e "SHOW DATABASES;"
# 执行多条SQL语句 mysql -u username -p -e "USE test; SELECT * FROM users;"
# 示例 mysql -u root -p -e "SHOW DATABASES;" mysql -u root -p -e "SELECT VERSION();"
2. 从文件执行SQL
# 从文件执行SQL mysql -u username -p database_name < file.sql
# 示例 mysql -u root -p mydb < backup.sql
三、常用命令行选项
1. 输出格式控制
# 不显示列名 mysql -u root -p -s -e "SELECT * FROM users"
# 垂直显示结果(每列单独一行) mysql -u root -p -E -e "SELECT * FROM users"
# 表格格式(默认) mysql -u root -p -t -e "SELECT * FROM users"
# XML格式输出 mysql -u root -p -X -e "SELECT * FROM users"
# HTML格式输出 mysql -u root -p -H -e "SELECT * FROM users"
2. 执行控制选项
# 强制执行,遇到错误继续 mysql -u root -p -f -e "SQL语句"
# 安静模式,减少输出 mysql -u root -p -q -e "SQL语句"
# 跳过自动重连 mysql -u root -p --skip-reconnect
# 启用自动补全(默认开启) mysql -u root -p --auto-rehash
3. 字符集设置
# 设置客户端字符集 mysql -u root -p --default-character-set=utf8mb4
# 示例 mysql -u root -p --default-character-set=utf8
四、交互模式下的命令
1. 帮助命令
-- 获取帮助help \h \? ?
-- 查看特定命令帮助 help select\h show
2. 执行系统命令
-- 执行系统命令 system command \! command
-- 示例 system ls -la \! pwd
3. 格式化输出
-- 垂直显示结果 SELECT * FROM users \G -- 表格格式(默认) SELECT * FROM users \g
4. 编辑器命令
-- 编辑当前查询 edit \e
-- 使用外部编辑器编辑查询 \! vi
五、批处理模式
1. 基本批处理
# 执行多个SQL文件 mysql -u root -p < script1.sql mysql -u root -p < script2.sql
# 执行包含多条语句的脚本 mysql -u root -p << EOF USE test; SELECT * FROM users; SHOW TABLES; EOF
2. 带参数的批处理
#!/bin/bash DB_USER="root" DB_PASS="password" DB_NAME="mydb"
mysql -u $DB_USER -p$DB_PASS $DB_NAME << EOF INSERT INTO users (name, email) VALUES ('John', 'john@example.com'); UPDATE users SET status=1 WHERE id=1; EOF
六、实用技巧
1. 配置文件使用
# 使用配置文件(~/.my.cnf) [client] user=root password=your_password host=localhost
# 连接时不需输入用户名密码 mysql
2. 执行时间统计
# 显示查询执行时间 mysql -u root -p -vvv -e "SELECT * FROM large_table"
3. 安全连接
# 使用SSL连接 mysql -u root -p --ssl-mode=REQUIRED # 指定SSL证书 mysql -u root -p --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
4. 性能相关选项
# 不预读结果 mysql -u root -p --quick # 压缩协议 mysql -u root -p --compress # 启用管道协议 mysql -u root -p --pipe
七、退出命令
-- 退出mysql客户端 exit quit \q
-- 快捷键 Ctrl + D -- Unix/Linux Ctrl + Z -- Windows
八、实用示例集合
1. 数据库备份和恢复
# 备份数据库 mysqldump -u root -p database_name > backup.sql
# 恢复数据库 mysql -u root -p database_name < backup.sql
# 只备份结构 mysqldump -u root -p --no-data database_name > structure.sql
# 只备份数据 mysqldump -u root -p --no-create-info database_name > data.sql
2. 监控和状态检查
# 查看MySQL状态 mysql -u root -p -e "SHOW STATUS"
# 查看进程列表 mysql -u root -p -e "SHOW PROCESSLIST"
# 查看变量 mysql -u root -p -e "SHOW VARIABLES"
# 查看引擎状态 mysql -u root -p -e "SHOW ENGINE INNODB STATUS\G"
3. 性能测试
# 多次执行查询 mysql -u root -p -e "SELECT BENCHMARK(1000000, MD5('test'))"
九、常见问题解决
1. 连接问题
# 连接被拒绝 mysql -u root -p --host=127.0.0.1 # 套接字连接 mysql -u root -p --socket=/tmp/mysql.sock # 跳过DNS解析 mysql -u root -p --skip-name-resolve
2. 编码问题
# 设置字符集 mysql -u root -p --default-character-set=utf8mb4
# 检查当前编码 mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set%'"
十、完整示例脚本
#!/bin/bash # mysql_operations.sh
DB_USER="admin" DB_PASS="secure_pass" DB_NAME="app_db" BACKUP_DIR="/backup/mysql"
# 1. 备份数据库 echo "正在备份数据库..." mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/backup_$(date +%Y%m%d).sql
# 2. 执行维护任务 echo "执行数据库维护..." mysql -u $DB_USER -p$DB_PASS $DB_NAME << EOF ANALYZE TABLE users; OPTIMIZE TABLE logs; CHECK TABLE transactions; EOF
# 3. 生成报告 echo "生成数据库报告..." mysql -u $DB_USER -p$DB_PASS -t << EOF USE $DB_NAME; SELECT '数据库状态报告' AS ''; SELECT COUNT(*) AS '用户总数' FROM users; SELECT COUNT(*) AS '活跃用户数' FROM users WHERE status=1; SELECT table_name, table_rows, data_length, index_length FROM information_schema.tables WHERE table_schema='$DB_NAME'; EOF
这个详解涵盖了MySQL命令行客户端的主要功能。实际使用时,可以根据具体需求组合不同的选项和参数。

发表评论
所有评论