MySQL 对其日志文件需要什么权限?

MySQL 对其日志文件需要什么权限?

我正在尝试启用 MySQL 的常规日志(在运行时,以防万一)并设置日志文件的路径。这些是我在建立与服务器的连接后发出的查询:

SET GLOBAL general_log=1;
SET GLOBAL general_log_file='/home/bleistift2/projekte/ng-haushalt-server/mysql-log.log';

服务器响应:

code: 'EE_FILENOTFOUND',
errno: 29,
sqlMessage:
 'File \'/home/bleistift2/projekte/ng-haushalt-server/mysql-log.log\' not found (Errcode: 13 - Permission denied)',
sqlState: 'HY000',
index: 0,
sql: 'SET GLOBAL general_log=1;'

我无法解释为什么 MySQL 无法获得打开文件的权限,因为它归用户和组所有mysql,并且对其具有读写权限。从/下到ng-haushalt-server(日志文件的父级)的目录至少都是全球可读和全球可执行的:

drwxr-xr-x  5 root       root         4096 Jan 24 11:26 home/
drwxr-xr-x 72 bleistift2 bleistift2 196608 Feb 20 17:08 bleistift2/
drwxrwxr-x 22 bleistift2 bleistift2   4096 Feb 18 15:55 projekte/
drwxrwxr-x  7 bleistift2 bleistift2   4096 Feb 20 17:16 ng-haushalt-server/
-rw-rw-r--  1 mysql      mysql           0 Feb 20 17:30 mysql-log.log

我还验证了用户mysql可以通过cd进入文件并手动写入来写入文件:

mysql@bleistift2-yoga / $ cd home
mysql@bleistift2-yoga /home $ cd bleistift2
mysql@bleistift2-yoga /home/bleistift2 $ cd projekte
mysql@bleistift2-yoga /home/bleistift2/projekte $ cd ng-haushalt-server/
mysql@bleistift2-yoga /home/bleistift2/projekte/ng-haushalt-server $ echo "works" >> mysql-log.log 
mysql@bleistift2-yoga /home/bleistift2/projekte/ng-haushalt-server $ cat mysql-log.log
works

我尝试为文件提供上述权限和所有权,并且尝试过没有预先存在的文件,希望 MySQL 能够创建它,但两种情况下的错误都是相同的。

我尝试过带有和不带有引号的路径。

通过检查常规查询日志的默认位置,我断言路径中没有拼写错误:

2020-02-21T11:39:13.191408Z     6 Query SET GLOBAL general_log=1
2020-02-21T11:39:13.194485Z     6 Query SET GLOBAL general_log_file="/home/bleistift2/projekte/ng-haushalt-server/mysql-log.log"
# Path copied from general log
$ stat /home/bleistift2/projekte/ng-haushalt-server/mysql-log.log
  File: '/home/bleistift2/projekte/ng-haushalt-server/mysql-log.log'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 10308h/66312d   Inode: 3039703     Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  123/   mysql)   Gid: (  131/   mysql)
Access: 2020-02-21 12:38:14.717038315 +0100
Modify: 2020-02-20 17:30:20.639591019 +0100
Change: 2020-02-20 17:30:29.867590984 +0100
 Birth: -

我见过另一个问题答案建议将(默认)包含目录的所有权转让给用户mysql。我宁愿不这样做,因为父目录是服务器端应用程序的根开发目录,我不明白为什么有必要mysql读取和执行(cd 进入)它。

所有其他查询(SELECT等)均有效。

相关内容