MySQL的配置文件和启动选项
一、MySQL读取配置文件的顺序
注意:有时候虽然/etc下有配置文件,但是安装目录下有配置文件,任然会使用安装目录下的配置文件
[root@mysql ~]# mysql --help --verbose | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
可以有多个配置文件,后面的参数会替换前面的参数文件。
二、如何查看MySQL的配置文件
MySQL实例在启动时,会先读取配置参数文件my.cnf。my.cnf一般会放在MySQL的安装目录中,用户也可以放在其他目录加载。安装MySQL后,系统中会有多个my.cnf文件,有些是用于测试的。使用“locate my.cnf"或"find / -name my.cnf"命令可以列出所有的my.cnf文件。
2.1、查看是否使用了指定路径的配置文件
[root@mysql log]# ps -ef | grep mysql root 5564 1 0 20:31 pts/0 00:00:00 /bin/sh /mysql3306/bin/mysqld_safe --datadir=/mysql3306/data --pid-file=/mysql3306/data/mysql.pid mysql 5740 5564 0 20:31 pts/0 00:00:01 /mysql3306/bin/mysqld --basedir=/mysql3306 --datadir=/mysql3306/data --plugin-dir=/mysql3306/lib/plugin
--user=mysql --log-error=/mysql3306/log/mysql.err3 --pid-file=/mysql3306/data/mysql.pid --socket=/tmp/mysql.sock root 5977 1769 0 20:34 pts/0 00:00:00 grep --color=auto mysql [root@mysql log]# ps -ef | grep mysql | grep my.cnf
没有输出表示没有使用指定路径的配置文件。
如果没有设置使用指定目录的my.cnf,MySQL启动时会读取安装目录根目录及默认目录下的my.cnf文件。
2.2、查看配置文件路径
[root@mysql log]# whereis my.cnf
my: /etc/my.cnf
三、参数说明
[mysqld] MySQL服务器启动时候使用的参数
[mysql] 登陆后命令行的参数
[mysqlclient] 所有客户端登陆后使用的参数
3.1 查看所有参数
(root@localhost) [(none)]> show variables\G
查看某一个参数
(root@localhost) [(none)]> show variables like 'log_error'; +---------------+---------------------------+ | Variable_name | Value | +---------------+---------------------------+ | log_error | /mysql3306/log/mysql.err2 | +---------------+---------------------------+ 1 row in set (0.02 sec)
查看相关所有参数
(root@localhost) [(none)]> show variables like 'innodb%'; +------------------------------------------+------------------------+ | Variable_name | Value | +------------------------------------------+------------------------+ | innodb_adaptive_flushing | ON | | innodb_adaptive_flushing_lwm | 10 | | innodb_adaptive_hash_index | ON | | innodb_adaptive_hash_index_parts | 8 |
3.2、参数的分类
全局的 :所有回话有效
回话级别的:当前的回话有效
设置回话级别的参数
(root@localhost) [(none)]> set session long_query_time=5; Query OK, 0 rows affected (0.01 sec) (root@localhost) [(none)]> show variables like 'long_query_time'; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 5.000000 | +-----------------+----------+ 1 row in set (0.01 sec)
查看全局变量参数,修改全局变量后,重启数据库后参数失效
(root@localhost) [(none)]> show global variables like 'long_query_time'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.00 sec)
查看连接的线程
(root@localhost) [(none)]> show processlist; +----+------+-----------+------+---------+------+----------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+----------+------------------+ | 2 | root | localhost | NULL | Query | 0 | starting | show processlist | | 3 | root | localhost | NULL | Sleep | 3 | | NULL | +----+------+-----------+------+---------+------+----------+------------------+ 2 rows in set (0.00 sec)
四、启动选项说明
可在bin目录下启动
[root@mysql bin]# mysqld --defaults-file=/etc/my.cnf --user=root & [1] 4380
https://zhuanlan.zhihu.com/p/542173634?utm_id=0