菜鸟科技网

MySQL命令行参数有哪些常用配置?

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

MySQL命令行参数有哪些常用配置?-图1
(图片来源网络,侵删)

服务器启动参数

MySQL 服务器启动时,可以通过命令行参数指定配置文件路径、端口、数据目录等核心设置,常用参数包括:

  1. --defaults-file=file_name
    指定从哪个配置文件读取参数(仅该文件中的参数有效),避免加载默认配置。
    mysqld --defaults-file=/etc/my.cnf

  2. --port=port_num
    设置服务器监听的端口号,默认为 3306。
    mysqld --port=13306

  3. --socket=file_name
    指定 Unix 套接字文件路径,用于本地连接。
    mysqld --socket=/tmp/mysql.sock

    MySQL命令行参数有哪些常用配置?-图2
    (图片来源网络,侵删)
  4. --datadir=path
    指定数据文件存储目录,
    mysqld --datadir=/var/lib/mysql/data

  5. --pid-file=file_name
    指定进程 ID 文件路径,用于管理服务进程。
    mysqld --pid-file=/var/run/mysqld/mysqld.pid

安全与认证参数

安全相关参数用于控制用户访问、密码验证和加密功能:

  1. --skip-grant-tables
    跳过权限表检查(仅用于紧急修复,启动后需立即重置权限)。
    风险:允许无密码登录,生产环境禁用。

    MySQL命令行参数有哪些常用配置?-图3
    (图片来源网络,侵删)
  2. --skip-networking
    禁用 TCP/IP 连接,仅允许本地 Unix 套接字连接,增强安全性。

  3. --ssl-ca=file
    指定 SSL 证书颁发机构文件,启用加密连接。
    mysqld --ssl-ca=/etc/mysql/ca.pem

  4. --default-authentication-plugin=plugin_name
    设置默认认证插件,如 mysql_native_passwordcaching_sha2_password

日志与调试参数

日志和调试参数用于记录服务器状态和排查问题:

  1. --log-error=file_name
    指定错误日志文件路径,
    mysqld --log-error=/var/log/mysql/error.log

  2. --general-log--general-log-file=file_name
    启用查询日志并指定文件路径,记录所有 SQL 语句。

  3. --slow-query-log--slow-query-log-file=file_name
    启用慢查询日志,记录执行时间超过 long_query_time(默认 10 秒)的查询。

  4. --log-bin[=file_name]
    启用二进制日志(用于主从复制),
    mysqld --log-bin=mysql-bin

  5. --debug[=options]
    启用调试模式,输出详细日志(需编译时开启调试支持)。

性能优化参数

性能参数用于调整内存分配、缓存和并发处理能力:

  1. --innodb-buffer-pool-size=size
    设置 InnoDB 存储引擎的缓冲池大小(建议为物理内存的 50%-70%),
    mysqld --innodb-buffer-pool-size=4G

  2. --max-connections=num
    设置最大并发连接数,默认为 151。
    mysqld --max-connections=500

  3. --key-buffer-size=size
    设置 MyISAM 表键缓存大小,
    mysqld --key-buffer-size=256M

  4. --table-open-cache=num
    设置表缓存实例数,减少打开表的开销。

复制参数

主从复制相关参数用于配置数据同步:

  1. --server-id=id
    设置服务器唯一 ID(主从节点必须不同),
    mysqld --server-id=1(主库)
    mysqld --server-id=2(从库)

  2. --log-bin
    主库必须启用,记录二进制日志供从库同步。

  3. --relay-log=file_name
    从库指定中继日志文件,存储从主库获取的二进制日志。

客户端连接参数

MySQL 客户端(如 mysql 命令)也支持多种参数:

  1. -h, --host=name
    指定服务器主机名或 IP,
    mysql -h 192.168.1.100 -u root -p

  2. -P, --port=port_num
    指定连接端口,
    mysql -P 13306 -u root

  3. -u, --user=name
    指定连接用户名,
    mysql -u repl_user -p

  4. --default-character-set=charset_name
    设置客户端默认字符集,
    mysql --default-character-set=utf8mb4

  5. --execute="sql_statement"
    执行 SQL 语句后退出,
    mysql -e "SHOW DATABASES;"

参数优先级与配置文件

命令行参数的优先级高于配置文件(如 my.cnf),加载顺序为:

  1. 命令行参数
  2. 配置文件中的参数(按 /etc/my.cnf/etc/mysql/my.cnfSYSCONFDIR/my.cnf~/.my.cnf 顺序)
  3. 服务器默认值

常用参数速查表

参数类别 参数示例 说明
服务器基础 --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"
前者显示运行时参数,后者显示可用参数及其默认值。

分享:
扫描分享到社交APP
上一篇
下一篇