我希望MySQL创建一个新的通用日志文件并将所有内容记录到它。
当我在MySQL中键入它时:
set global general_log_file='~/path/to/new/file';
并且文件是我希望MySQL在我设置全局变量后处理某些事务时创建的文件(即它还不存在),它给了我一个错误:
Variable 'general_log_file' can't be set to the value of '~/path/to/new/file'
但是,如果我使用的文件路径如下:
set global general_log_file='new/file';
它没有抱怨并相应地分配变量,即使这个新文件还不存在。
这里发生了什么?
答案 0 :(得分:0)
更改我的cnf.ini
general_log_file = /var/log/mysql/new_file.log
general_log = 1
然后重启mysql进程
服务器重新启动和日志刷新不会导致新的常规查询日志 要生成的文件(虽然刷新关闭并重新打开)
shell> mysqladmin flush-logs
答案 1 :(得分:0)
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file='/var/log/general_log/general.log';
If error occurs MySQL: Variable 'general_log_file' can't be set to the value of '/var/log/general_log/general.log'
Just simple change file owner to mysql
Example chown -p mysql:mysql /var/log/general_log
Then change file permission
Format: chown 777 <log_output_file_name>
Ex: chmod 777 general.log
After that execute,
SET GLOBAL general_log_file='/var/log/general_log/general.log';
Verify the result: show global variables like '%general_log_file%';
Output:
MariaDB [(none)]> show global variables like '%general_log_file%';
+------------------+----------------------------------+
| Variable_name | Value |
+------------------+----------------------------------+
| general_log_file | /var/log/general_log/general.log |
+------------------+----------------------------------+
1 row in set (0.00 sec)