Appearance
MySQL 常用命令/工具
1. mysql
作用: MySQL 客户端工具,用于连接数据库、执行 SQL 语句和脚本。
常用选项:
-u <user>: 指定用户名(如-u root);-p: 提示输入密码;-h <host>: 连接远程主机(如-h 127.0.0.1);-P <port>: 指定端口(默认3306);-e "<SQL>": 执行单条 SQL 后退出;--default-character-set=utf8: 设置字符集;
经典示例:
登录数据库
Bashmysql -u root -p执行单条 SQL 并退出
Bashmysql -u root -p -e "SHOW DATABASES;"执行 SQL 脚本文件
Bashmysql -u root -p dbname < script.sql
2. mysqladmin
作用: 管理 MySQL 服务器,执行管理操作(如创建/删除库、重启服务)。
常用选项:
create <dbname>: 创建数据库;drop <dbname>: 删除数据库;status: 查看服务器状态(如运行时间、查询数);shutdown: 关闭 MySQL 服务(需权限);ping: 检查服务是否存活;
经典示例:
创建数据库
Bashmysqladmin -u root -p create new_db检查服务状态
Bashmysqladmin -u root -p status关闭 MySQL 服务
Bashmysqladmin -u root -p shutdown
3. mysqlbinlog
作用: 解析和查看二进制日志(binlog),支持数据恢复或审计。
常用选项:
--start-datetime=<time>: 指定起始时间;--stop-datetime=<time>: 指定结束时间;--start-position=<pos>: 指定起始位置;--stop-position=<pos>: 指定结束位置;-v: 显示详细 SQL 伪语句(需配合--base64-output=DECODE-ROWS);
经典示例:
查看 binlog 内容
Bashmysqlbinlog /var/lib/mysql/binlog.000001恢复特定时间段的日志
Bashmysqlbinlog binlog.000001 --start-datetime="2023-10-01 00:00:00" | mysql -u root -p
4. mysqlshow
作用: 快速查看数据库、表、列的结构信息。
常用选项:
--count: 显示数据库/表的统计信息;-i: 显示表状态信息(如存储引擎);
经典示例:
列出所有数据库
Bashmysqlshow -u root -p查看某数据库的所有表
Bashmysqlshow -u root -p dbname查看表的列信息(含行数)
Bashmysqlshow -u root -p dbname tablename --count
5. mysqldump
作用: 备份数据库,生成 SQL 格式的导出文件。
常用选项:
--databases <db1 db2>: 备份指定数据库;--single-transaction: 保证 InnoDB 一致性(需事务支持);--no-data: 仅导出表结构;--where=<条件>: 导出部分数据(如--where="id<100");--routines: 包含存储过程;--triggers: 包含触发器;--tab=<path>:导出为两个文件(表结构.sql文件,数据.txt文件);
经典示例:
备份整个数据库(含数据)
Bashmysqldump -u root -p --databases dbname > backup.sql仅备份表结构
Bashmysqldump -u root -p --no-data dbname > schema.sql导出特定条件的数据
Bashmysqldump -u root -p dbname tablename --where="created_at > '2023-01-01'" > data.sql
Tip:
--secure-file-priv安全限制如果运行时提示:
Logmysqldump : Got error: 1290: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement when executing 'SELECT INTO OUTFILE'该错误是因为 MySQL 启用了
--secure-file-priv安全限制,禁止向任意路径导出文件(如SELECT INTO OUTFILE或LOAD DATA INFILE),而你的命令触发了该限制。解决方案也很简单,将导出路径改为
secure_file_priv指定的目录即可:SQLSHOW VARIABLES LIKE 'secure_file_priv';
- 如果值为
NULL: 完全禁止文件导出/导入;- 如果值为目录路径(如
/var/lib/mysql-files/): 只能在此目录下操作;
6. mysqlimport
作用: 将文本文件(如 CSV)导入表中,本质是 LOAD DATA INFILE 的封装。
常用选项:
--ignore: 跳过重复行(根据唯一键);--replace: 替换重复行;--fields-terminated-by=<分隔符>: 指定列分隔符;--lines-terminated-by=<分隔符>: 指定行分隔符;
经典示例:
导入 CSV 到表
Bashmysqlimport -u root -p --fields-terminated-by=, dbname /path/to/data.csvTip:文件名需与目标表名一致(如
data.csv对应表data)。忽略重复数据
Bashmysqlimport -u root -p --ignore dbname data.txt
7. source
作用: MySQL 客户端内置命令,用于执行 SQL 脚本文件。常用于恢复备份或执行批量 SQL。
经典示例:
Bash
-- 在 MySQL 命令行中执行
mysql> USE dbname;
mysql> SOURCE /path/to/backup.sql;