首页 >> 工具知识

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


最新文章
mysql命令-mysqlimport2026-02-01
mysql命令-mysql_tzinfo_to_sql2026-02-01
mysql命令-mysql2026-02-01
mysql命令-my_print_defaults2026-02-01
mysql命令-mysqldumpslow2026-02-01
mysql命令-mysqld2026-02-01
mysql命令-mysql_secure_installation2026-02-01
mysql命令-myisampack2026-02-01
mysql命令-perror2026-02-01
mysql命令-mysqldump2026-02-01
备案号:蜀ICP备2023042032号-1