![mysqld fornece errcode:13 porque não pode criar arquivos de teste](https://rvso.com/image/1036656/mysqld%20fornece%20errcode%3A13%20porque%20n%C3%A3o%20pode%20criar%20arquivos%20de%20teste.png)
Nova instalação do 11.04. Então segui todas as instruções aqui: http://www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-ubuntu-11.04-lamp
Agora, quando executo o mysqld, recebo este erro:
makara@rahu:~$ mysqld
111103 13:39:37 [Warning] Can't create test file /var/lib/mysql/rahu.lower-test
111103 13:39:37 [Warning] Can't create test file /var/lib/mysql/rahu.lower-test
mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13)
111103 13:39:37 [ERROR] Aborting
111103 13:39:37 [Note] mysqld: Shutdown complete
Alguém no IRC disse que pode ser um problema de pacote?
Obrigado beterraba
Responder1
Encontrei o mesmo problema após a atualização do Oneiric para o Precise, que atualiza o MySQL de 5.1 para 5.5.
No meu caso, o problema foi que
/etc/apparmor.d/local/usr.sbin.mysqld
estava faltando, embora tenha sido incluído a partir de
/etc/apparmor.d/usr.sbin.mysqld
por padrão. Um simples
sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
resolveu o problema para mim.
Para quem procura: o arquivo de log que contém as informações interessantes é /var/log/upstart/mysql. Não haverá nada em /var/log/mysql(*|/*)
O que você vê pode incluir:
sudo service mysql start
resulta emstart: Falha ao iniciar o trabalho
Tentar iniciar manualmente
mysqld
como um usuário normal falhará normalmente (antes que o problema acima entre em ação), porque o usuário não tem acesso a /var/lib/mysql (isso pode ser encontrado no syslog).Iniciar o mysqld como root terá sucesso (não sei por que)
Responder2
mysqld deve ser executado como usuário mysql. Você não deve executar o daemon manualmente. Melhor iniciá-lo como um serviço como este:
sudo service mysql start
A mensagem de erro indica que o serviço mysql não pode acessar determinados arquivos que não deveriam ter acesso em seu ambiente de usuário. Portanto, esse comportamento deve estar correto. No entanto, você deve verificar se os diretórios existem e quem os possui e quem tem acesso a eles (use ls -la para este propósito):
ls -la /var/lib/
ls -la /var/lib/mysql