我正在处理现有的Dockerfile
,我被要求尽可能少地修改。 docker镜像基于CentOS Linux映像,应该包含MySQL服务。
我想为所有查询(即general_log
文件中的general_log_file
和/etc/my.cnf
变量)启用详细日志记录。
MySQL服务需要在mysqld_safe
模式下运行,并且我已经检查了我添加的配置行(请参阅下面的printf
)是在[mysqld_safe]
之后/etc/my.cnf
文件中的行,所以我假设此设置应该没问题。
到目前为止我所做的是在Dockerfile
以下陈述中添加:
RUN groupadd -r mysql && useradd -r -g mysql mysql
# [...] Lots of Mysql stuff regarding importing DBs etc.
# Adding some more configuration details to the database service
RUN printf '\n%s\n%s\n%s\n\n' '# Set General Log to log all the queries' 'general_log=1' 'general_log_file=/var/log/mysql_general.log' >> /etc/my.cnf
# Getting the new log file prepared to get written by the MySQL service
RUN touch /var/log/mysql_general.log
RUN chown mysql.mysql /var/log/mysql_general.log
# MySQL Port
EXPOSE 3306
ENTRYPOINT ["mysqld_safe"]
构建docker镜像并运行docker容器后,我在/var/log
文件夹中看到了这一点:
-rw-r-----. 1 mysql mysql 5108 Nov 20 17:07 mysqld.log
-rw-r--r--. 1 mysql mysql 3880 Nov 20 17:44 mysql_general.log
如果我为mysqld.log
或ERROR
等关键字点击general
,我找不到任何有趣的内容。 mysql_general.log
文件为空。
我也看到了这一点:
mysql> show variables like '%general_log%';
+------------------+----------------------------+
| Variable_name | Value |
+------------------+----------------------------+
| general_log | OFF |
| general_log_file | /var/run/mysqld/mysqld.log |
+------------------+----------------------------+
2 rows in set (0.00 sec)
mysql>
我无法在日志文件中写入SQL查询,为什么?