一、配置文件参数替换原则
我们可以通过命令 mysql --help --verbose | grep my.cnf 查看mysql的配置文件有多个。如果两个配置文件有共同的参数,当mysql启动的时候,会以那个参数为准了?
如果两个配置文件有共同的参数,mysql 会以上面的顺序去读my.cnf,后面的的my.cnf会替换前面的my.cnf配置。所以当我们在/etc/my.cnf文件中配置的参数没有生效时,可能就是被后面的my.cnf替换了。
二、 标签分类介绍
[client] ### 所有的客户端登录的配置参数
user=root ## user和password是免密码登录的设置
password=123456
[mysql] ### 这个标签分类指的是 进入mysql命令登录进去后的配置参数
prompt=(\\u@\\h) [\\d]>\\_
[mysqld] ### 这个标签分类指的是 mysql启动的配置参数
skip-grant-tables=1
basedir=/usr/local/mysql-5.7.16
log_error=mysql_error.log
datadir=/mdata/mysql_test_data
socket=/var/lib/mysql/mysql.sock
上面是我的/etc/my.cnf配置文件
三、在mysql登录后查看配置的参数
show variables like 'log_error'
四、 参数的作用域
① global 全局的
例如:set global long_query_time = 5;
这里需要注意的是:当我们查询全局某个参数时,一定需要加上global, 不然会一直显示session的值,
因为在前面我设置了session的long_query_time的值是1, 就算后面重新设置了global的long_query_time,对应当前这个session也是没用作用的,因为当前的session的long_query_time的值已经存在了当前的session中了,除非当前的session断开,重新连接。
② session 会话的
set long_query_time = 1; 其实等于 set session long_query_time = 1;
注意:我们直接set 是改的session当前会话的参数值,但是实际情况中,我们一般是要根据全局来修改,所以在修改和查询的时候都需要在命令中加入global全局操作。
五、 参数查看的另外一种方法
其实mysql的参数还可以通过performance_schema(性能分析数据库)数据库中的global_variables表中查看全局参数。
在session_variables表中查看所有session会话的参数设置
可以通过variables_by_thread表查看当前所有连接的session中参数的不同值
表中的 thread_id 怎么跟 我们的 show processlist的id对应找到了?
mysql5.7中有一个threads中包含了processlist的id