MySQL 命令行参数是启动 MySQL 服务器或客户端时使用的选项,用于配置服务器行为、连接方式、日志输出等,掌握这些参数对于数据库管理员和开发者至关重要,能够帮助优化性能、调试问题以及确保安全,以下将详细介绍常用的 MySQL 命令行参数,并按功能分类说明。

服务器启动参数
MySQL 服务器启动时,可以通过命令行参数指定配置文件路径、端口、数据目录等核心设置,常用参数包括:
-
--defaults-file=file_name
指定从哪个配置文件读取参数(仅该文件中的参数有效),避免加载默认配置。
mysqld --defaults-file=/etc/my.cnf -
--port=port_num
设置服务器监听的端口号,默认为 3306。
mysqld --port=13306 -
--socket=file_name
指定 Unix 套接字文件路径,用于本地连接。
mysqld --socket=/tmp/mysql.sock
(图片来源网络,侵删) -
--datadir=path
指定数据文件存储目录,
mysqld --datadir=/var/lib/mysql/data -
--pid-file=file_name
指定进程 ID 文件路径,用于管理服务进程。
mysqld --pid-file=/var/run/mysqld/mysqld.pid
安全与认证参数
安全相关参数用于控制用户访问、密码验证和加密功能:
-
--skip-grant-tables
跳过权限表检查(仅用于紧急修复,启动后需立即重置权限)。
风险:允许无密码登录,生产环境禁用。
(图片来源网络,侵删) -
--skip-networking
禁用 TCP/IP 连接,仅允许本地 Unix 套接字连接,增强安全性。 -
--ssl-ca=file
指定 SSL 证书颁发机构文件,启用加密连接。
mysqld --ssl-ca=/etc/mysql/ca.pem -
--default-authentication-plugin=plugin_name
设置默认认证插件,如mysql_native_password或caching_sha2_password。
日志与调试参数
日志和调试参数用于记录服务器状态和排查问题:
-
--log-error=file_name
指定错误日志文件路径,
mysqld --log-error=/var/log/mysql/error.log -
--general-log和--general-log-file=file_name
启用查询日志并指定文件路径,记录所有 SQL 语句。 -
--slow-query-log和--slow-query-log-file=file_name
启用慢查询日志,记录执行时间超过long_query_time(默认 10 秒)的查询。 -
--log-bin[=file_name]
启用二进制日志(用于主从复制),
mysqld --log-bin=mysql-bin -
--debug[=options]
启用调试模式,输出详细日志(需编译时开启调试支持)。
性能优化参数
性能参数用于调整内存分配、缓存和并发处理能力:
-
--innodb-buffer-pool-size=size
设置 InnoDB 存储引擎的缓冲池大小(建议为物理内存的 50%-70%),
mysqld --innodb-buffer-pool-size=4G -
--max-connections=num
设置最大并发连接数,默认为 151。
mysqld --max-connections=500 -
--key-buffer-size=size
设置 MyISAM 表键缓存大小,
mysqld --key-buffer-size=256M -
--table-open-cache=num
设置表缓存实例数,减少打开表的开销。
复制参数
主从复制相关参数用于配置数据同步:
-
--server-id=id
设置服务器唯一 ID(主从节点必须不同),
mysqld --server-id=1(主库)
mysqld --server-id=2(从库) -
--log-bin
主库必须启用,记录二进制日志供从库同步。 -
--relay-log=file_name
从库指定中继日志文件,存储从主库获取的二进制日志。
客户端连接参数
MySQL 客户端(如 mysql 命令)也支持多种参数:
-
-h, --host=name
指定服务器主机名或 IP,
mysql -h 192.168.1.100 -u root -p -
-P, --port=port_num
指定连接端口,
mysql -P 13306 -u root -
-u, --user=name
指定连接用户名,
mysql -u repl_user -p -
--default-character-set=charset_name
设置客户端默认字符集,
mysql --default-character-set=utf8mb4 -
--execute="sql_statement"
执行 SQL 语句后退出,
mysql -e "SHOW DATABASES;"
参数优先级与配置文件
命令行参数的优先级高于配置文件(如 my.cnf),加载顺序为:
- 命令行参数
- 配置文件中的参数(按
/etc/my.cnf→/etc/mysql/my.cnf→SYSCONFDIR/my.cnf→~/.my.cnf顺序) - 服务器默认值
常用参数速查表
| 参数类别 | 参数示例 | 说明 |
|---|---|---|
| 服务器基础 | --port=3306 |
设置监听端口 |
| 安全 | --skip-networking |
禁用 TCP/IP 连接 |
| 日志 | --log-error=/var/log/error.log |
指定错误日志路径 |
| 性能 | --innodb-buffer-pool-size=2G |
设置 InnoDB 缓冲池大小 |
| 复制 | --server-id=1 |
设置服务器唯一 ID |
| 客户端连接 | -h 127.0.0.1 -u root -p |
连接本地服务器 |
相关问答 FAQs
Q1: 如何临时修改 MySQL 服务器参数而不重启服务?
A1: 对于动态参数(如 innodb_buffer_pool_size),可通过 SET GLOBAL 命令修改,
SET GLOBAL innodb_buffer_pool_size = 4G;
但修改后重启服务会失效,持久化修改需编辑配置文件(如 my.cnf)并重启服务。
Q2: 如何查看 MySQL 当前生效的所有参数?
A2: 执行以下 SQL 查询:
SHOW VARIABLES;
或使用命令行工具:
mysqld --verbose --help | grep "Variable"
前者显示运行时参数,后者显示可用参数及其默认值。
