我想打开 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”是只读变量
这是服务器系统多变的是只读的,不是文件。这意味着根据定义,您不能在运行时更改它。
您应该检查变量列表以了解在运行时可以更改哪些变量(参见 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
谢谢,现在我可以检查错误了。