首页 >> 工具知识

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命令行客户端的主要功能。实际使用时,可以根据具体需求组合不同的选项和参数。

所有评论

最新文章
20.5 性能优化建议2026-05-08
20.4 复杂查询实现2026-05-08
20.3 表创建与数据初始化2026-05-08
20.2 数据库设计2026-05-08
20.1 项目需求分析:博客系统2026-05-08
19.4 自动化备份策略2026-05-08
19.3 导出和导入数据2026-05-08
19.2 恢复备份数据2026-05-05
19.1 使用mysqldump备份数据2026-05-05
18.4 实战:开发简单的学生管理系统2026-05-05
关于我 备案号:蜀ICP备2023042032号-1