Quando inicio o servidor MySQL, recebo este erro:
/usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
Eu corri mysql_upgrade
para reconstruí-lo, e ele funciona para reconstruir. Antes de fazer isso, removi e instalei o MySQL. No entanto, quando tentei reiniciar, recebo o mesmo erro. Estou certo de que não é um problema de permissão, pois todos os arquivos e diretórios são criados pelo mysql
usuário.
Você poderia me aconselhar sobre como corrigir esse erro?
Respostas:
Se você possui o diretório de dados mysql em local não padrão e o seu sistema possui aparmor, verifique
/etc/apparmor.d/usr.sbin.mysqld
se o diretório de dados está na lista de permissões. A configuração deve se parecer com:O daemon do Apparmor deve ser reiniciado depois que você fizer alterações na configuração.
fonte
apparmor
volta para nos acordar de vez em quando, apenas para que não se esqueça sobre ele .../etc/apparmor.d/abstractions/user-tmp
. Quando eu colocoowner /mysql-tmp/** rwkl, /mysql-tmp/ r,
em/etc/apparmor.d/local/usr.sbin.mysqld
que começou a trabalhar para mim no Ubuntu 14.04.Tem certeza de que não se trata de permissões? número de erro: 13 :
A primeira coisa a tentar é mudar a propriedade do datadir do MySQL , por exemplo, se você executar o MySQL com o usuário mysql :
Outra coisa a verificar é se o proprietário do processo mysqld (provavelmente o mysql ) possui os privilégios necessários para o destino definido como tmpdir . E se por qualquer motivo o acima não funcionar, tente rastrear o processo mysqld para ver onde e por que a permissão é negada :
fonte
Eu concordo com Dimitre. Esse problema ocorre principalmente devido a permissões insuficientes. Mude a propriedade da pasta raiz do MySql para mysql.
Você pode querer alterar a permissão dos scripts Mysql para seu usuário personalizado.
Isso funcionou para mim.
fonte
No meu caso, eu precisava colocar o diretório de dados do MySQL, incluindo a
ibdata1
pasta em outro particionamento, porqueibdata1
estava crescendo muito rápido e ocorreu um problema de memória. Para isso, tive que alterar o arquivo my.cnf como abaixo.my.cnf era:
my.cnf agora:
Eu tentei,
mas ainda tem o mesmo erro acima. Então eu tentei mudar o
/etc/apparmor.d/usr.sbin.mysqld
arquivo. Isso funcionou bem para mim.Deveríamos colocar nossa nova pasta na lista de permissões
usr.sbin.mysqld
.Em vez das linhas acima, adicione,
Então reinicie o servidor MySQL.
fonte
Se você estiver executando o SELinux, o seguinte também poderá ajudar ...
fonte
restorecon -R /var/lib/mysql
ajudou a restaurar corretamente as configurações do SELinux para o diretório.Eu tive esse problema depois de atualizar de 5.5 para 5.6.
Estranhamente, parecia que o
mysql
usuário havia sido removido e recriado, o que fez com que todos os arquivos mysql essencialmente 'perdessem' suas permissões ...Eu descobri isso indo para o diretório mysql (que no meu caso não era o diretório padrão, como eu o mudei) e vi que o proprietário era apenas um número uuid e guid ... Então, eu executei
chown mysql:mysql
todos os dirs e arquivos e voilafonte
Este simples
chown
funcionou para mim também, não há mais processo de travamento:Felizmente, brincar com o apparmor fica complicado e difícil de editar.
fonte