mariadb无法打开error_log

mariadb无法打开error_log

我想打开 mariadb 的错误日志来解决“无法连接到数据库”错误

我可以毫无问题地打开 mariadb 中的常规日志和慢查询日志。但是当我重新启动 mariadb 时,它们又被关闭了。(也许这是应该发生的?)

我根本无法打开 log_error (/var/log/mysqld.log)

SET log_error='/var/log/mysqld.log';
ERROR 1238 (HY000): Variable 'log_error' is a read only variable

SET GLOBAL log_error='/var/log/mysqld.log';
ERROR 1238 (HY000): Variable 'log_error' is a read only variable

我已经设置文件权限

sudo chown -R mysql:mysql /var/log/mysqld.log

但仍然得到同样的错误

答案1

我可以毫无问题地打开 mariadb 中的常规日志和慢查询日志。但是当我重新启动 mariadb 时,它们又被关闭了。(也许这是应该发生的?)

也许您应该阅读一些有关服务器系统变量以及 SET 的作用的内容,以便理解这一点。谁知道呢。

使用 SET 语句,您可以仅在服务器运行时更​​改当前会话或运行时全局的变量值。

因此,如果您需要永久设置变量,则应在服务器的配置文件中更改它。它也适用于其他数据库,如 mysql、mariadb、postgresql、oracle。

我根本无法打开 log_error
SET log_error='/var/log/mysqld.log';
ERROR 1238 (HY000): 变量“log_error”是只读变量

  1. 这是服务器系统多变的是只读的,不是文件。这意味着根据定义,您不能在运行时更改它。

  2. 您应该检查变量列表以了解在运行时可以更改哪些变量(参见 Dynamic:yes|no): https://mariadb.com/kb/en/server-system-variables/#log_error
    或者像下面这样查询数据库本身:https://mariadb.org/mariadb-10-1-1-system-variables-and-their-metadata/

所以你应该log_error在 mariadb 配置文件中设置。

my.cnf
[mysqld]
general_log=1
slow_query_log=1
log_error=/path/to/file

答案2

当然 gapsf 是正确的 - 我犯了一个错误,没有包含 [mysqld]

将以下内容添加到 my.cnf 的底部效果很好

[mysqld]
general_log=1
slow_query_log=1
log_error=var/log/mysqld.log

使用命令检查设置

sudo mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e 

输出

slow_query_log
general_log     ON
general_log_file        lamp-wp3.log
log_error       var/log/mysqld.log
slow_query_log  ON
slow_query_log_file     lamp-wp3-slow.log

谢谢,现在我可以检查错误了。

相关内容