首页 > 解决方案 > 仍然无法启用慢查询日志

问题描述

环境

这是我的环境:

[mysqld]

# slow query log
slow_query_log=on
slow_query_log_file=/var/log/mysql/slow_query.log
long_query_time=1

# UTF-8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server=utf8

# disable case sensitive
lower_case_table_names=1

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
default-character-set=utf8

[client]
default-character-set=utf8

我已经创建了日志文件并以 root 身份执行了这些文件:

chown -R mysql:mysql /var/log/mysql
service mysqld restart

问题

慢查询日志未开启

当我以 root 身份在 mysql 中尝试此操作时:

show variables like '%slow%';

它显示了这些:

+---------------------------+-------------------------------+
| Variable_name             | Value                         |
+---------------------------+-------------------------------+
| log_slow_admin_statements | OFF                           |
| log_slow_slave_statements | OFF                           |
| slow_launch_time          | 2                             |
| slow_query_log            | OFF                           |
| slow_query_log_file       | /var/log/mysql/slow_query.log |
+---------------------------+-------------------------------+

试过了

当我尝试手动启用查询日志时:

set global slow_query_log = ON;

错误

ERROR 29 (HY000): File '/var/log/mysql/slow_query.log' not found (Errcode: 13 - Permission denied)

其他:

我做错什么了吗?也许是一个简单的愚蠢错误,但我无法弄清楚......

非常感谢

标签: mysql

解决方案


鉴于目录所有权是正确的,并且它的 Centos7,您需要修复 selinux 权限。

手动条目在此页面上使用mysqld_log_t,与错误日志相同,因为这将允许 logrotate 规则访问它。

semanage fcontext -a -t mysqld_log_t /var/log/mysql/slow_query.log

然后你应该能够启用,即使在运行时:

set global slow_query_log = ON;

推荐阅读