O log geral não funciona no MySQL

3

Eu vi no SF que há uma opção no MySQL para registrar todas as consultas. Então, na minha versão (mysql-server-5.0.45-7.el5 no CentOS 5.2) este parece ser um caso de habilitar a opção 'log', então eu editei /etc/my.cnf para adicionar isto:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=
log=/var/log/mysql-general.log

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Eu criei o arquivo e configurei as permissões:

# touch /var/log/mysql-general.log
# chown mysql. /var/log/mysql-general.log
# ls -l /var/log/mysql-general.log
-rw-r--r-- 1 mysql mysql 0 Jan 18 15:22 /var/log/mysql-general.log

Mas quando eu inicio o mysqld eu recebo:

120118 15:24:18  mysqld started
^G/usr/libexec/mysqld: File '/var/log/mysql-general.log' not found (Errcode: 13)
120118 15:24:18 [ERROR] Could not use /var/log/mysql-general.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
120118 15:24:18  InnoDB: Started; log sequence number 0 182917764
120118 15:24:18 [Note] /usr/libexec/mysqld: ready for connections.

Alguém pode sugerir por que isso não está funcionando?

    
por leonstr 18.01.2012 / 15:28

5 respostas

5

"Não encontrado" soa como um problema de permissão, mesmo que você tenha dado permissão ao mysql para tocar naquele arquivo específico, ele pode não ter acesso a /var/log . Tente colocar o arquivo de log na pasta de dados mysql, /var/lib/mysql/ . Eu estou tentando lembrar de um caso de ver os arquivos de log do mysql fora desse caminho ..

    
por 18.01.2012 / 16:18
2

Se você está no Ubuntu, você pode acertar isso se estiver tentando colocar o arquivo de log fora de um diretório mysql (por exemplo / var / log / mysql). Para corrigir isso, adicione seu caminho para /etc/apparmor.d/usr.sbin.mysqld.

    
por 08.11.2013 / 22:17
2

Este não é um problema incomum quando os serviços gravam em /var/log . O processo usual ao instalar um novo aplicativo como root é tocar o novo arquivo pelo nome e, em seguida, enviar o arquivo para o usuário / grupo que gravará no arquivo.
(Os serviços de syslog geralmente se recusam a criar um novo arquivo de log em / var / log porque o próprio diretório é de propriedade de root, portanto, os serviços que não estão sendo executados como root não podem criar novos arquivos. o processo de rotação de logs manterá a autoridade e as permissões para você.)

IE:

root$ touch /var/log/mysql_general.log

root$ chown mysql.mysql /var/log/mysql_general.log

Isso permitirá que o serviço mysqld grave no arquivo de log mesmo que o userid / gid efetivo do mysqld não seja root. Você pode querer verificar logrotate para configurar um cronograma de rotação, se o seu não lidar com isso por padrão. Para mais detalhes sobre permissões e melhores práticas, você vai querer investigar a configuração do syslog & manutenção.

(Acabei de corrigir este mesmo problema em um servidor antigo que herdei).

(editado para corrigir um erro de digitação e esclarecer um ponto)

    
por 04.02.2014 / 00:16
0

Em / var / lib / mysql / mysql existe um arquivo chamado general_log.csv criado por padrão. Você também pode usar esse arquivo para especificar (por exemplo, log = / var / lib / mysql / mysql / general_log.csv)

    
por 11.08.2014 / 05:08
0

Outra coisa que você pode verificar se você tem certeza de que as permissões de arquivo estão corretas é se o SELinux está interferindo em alguma coisa.

Nós lançamos o SELinux como permissivo e, de repente, o MySQL foi capaz de criar o arquivo de log em uma montagem separada que designamos para logging. Acabamos tendo que ajustar os contextos do caminho do diretório onde queríamos colocar o log.

    
por 28.07.2016 / 17:05

Tags