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"
前者显示运行时参数,后者显示可用参数及其默认值。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/464643.html<





