mysql 로그에 쓰기 권한이 거부되었습니다.

mysql 로그에 쓰기 권한이 거부되었습니다.

방금 Vagrant에서 새로운 Ubuntu(Vivid 15.04) 설치를 테스트하고 있는데 mysql 및 사용자 정의 위치에 로그인하는 데 문제가 발생했습니다.

/var/log/syslog내가 받기 전에

/usr/bin/mysqld_safe: cannot create /var/log/mysqld.log: Permission denied

내가 ls -l /var가지면

drwxrwxr-x 10 root syslog 4096 Jun  8 19:52 log

/var/log를 보면 파일이 존재하지 않습니다.

문제가 발생하는지 아니면 다른 문제가 발생하는지 격리하기 위해 의류를 일시적으로 비활성화했다고 생각했지만 여전히 문제를 일으키는지는 확실하지 않습니다. (편집: 여전히 활성화되어 있을 수 있다고 생각했기 때문에 문제인지 아니면 다른 문제인지 확실하지 않습니다. ) 권한).

mysql로 ​​파일을 수동으로 생성하려고 하면 거부됩니다(테스트를 위해 일시적으로 bash 액세스를 허용했지만 나중에 제거하겠습니다).

touch /var/log/mysql.log
touch: cannot touch ‘/var/log/mysql.log’: Permission denied

실행 중인 또 다른 서버(centos)를 보면 위와 같은 권한이 있고(그리고 mysql 사용자로 쓴다), mysql이 일반적으로 /var/log 디렉터리에 대한 접근 권한을 어떻게 얻고, 어떻게 접근하는지 궁금하다. 정상적인 작동을 통해 폴더?

이것은 내 mysql 의류 구성 파일입니다.


/usr/sbin/mysqld {
  #include 
  #include 
  #include 
  #include 
  #include 

  capability dac_override,
  capability sys_resource,
  capability setgid,
  capability setuid,

  network tcp,

  /etc/hosts.allow r,
  /etc/hosts.deny r,

  /etc/mysql/** r,
  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/log/mysqld.log rw,
  /var/log/mysqld.err rw,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid rw,
  /var/run/mysqld/mysqld.sock w,
  /run/mysqld/mysqld.pid rw,
  /run/mysqld/mysqld.sock w,

  /sys/devices/system/cpu/ r,

/var/log/mysqld.log rw,

  # Site-specific additions and overrides. See local/README for details.
  #include 
}

또한 위 파일을 apparmor.d/disable 디렉토리에 추가했습니다.

참고: 이 줄을 추가했는데 /var/log/mysqld.log rw처음에는 존재하지 않았으며 동일한 문제가 있었습니다(의류를 다시 로드한 후).


apparmor module is loaded.
5 profiles are loaded.
5 profiles are in enforce mode.
   /sbin/dhclient
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/connman/scripts/dhclient-script
   /usr/sbin/tcpdump
0 profiles are in complain mode.
1 processes have profiles defined.
1 processes are in enforce mode.
   /sbin/dhclient (565) 
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

Jun  8 20:33:33 vagrant-ubuntu-vivid-64 systemd[1]: Starting MySQL Community Server...
Jun  8 20:33:33 vagrant-ubuntu-vivid-64 mysqld_safe[11231]: 150608 20:33:33 mysqld_safe Logging to '/var/log/mysqld.log'.
Jun  8 20:33:33 vagrant-ubuntu-vivid-64 mysqld_safe[11231]: touch: cannot touch ‘/var/log/mysqld.log’: Permission denied
Jun  8 20:33:33 vagrant-ubuntu-vivid-64 mysqld_safe[11231]: chmod: cannot access ‘/var/log/mysqld.log’: No such file or directory
Jun  8 20:33:33 vagrant-ubuntu-vivid-64 mysqld_safe[11231]: 150608 20:33:33 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Jun  8 20:33:33 vagrant-ubuntu-vivid-64 mysqld_safe[11231]: /usr/bin/mysqld_safe: 126: /usr/bin/mysqld_safe: cannot create /var/log/mysqld.log: Permission denied

답변1

mysql대부분의 사람들은 inside라는 디렉터리를 만들고 /var/log해당 폴더의 소유자를 mysql 사용자로 변경하는 것 같습니다 .

sudo mkdir /var/log/mysql
sudo chown mysql:mysql /var/log/mysql   

이 작업이 가능해야 합니다. 서버의 로깅 위치를 업데이트하고 다시 시작하십시오. 테스트 후 mysql의 의류 구성 파일을 다시 활성화합니다.

관련 정보