Original post: http://anothermysqldba.blogspot.com/2014/07/mysql-ubuntu-mysqld-does-not-have.html
Então, hoje eu acontecem a necessidade de restaurar um banco de dados MySQL a partir de backups para que eu pudesse recuperar algumas tabelas. Enquanto eu deixei ele de banco de dados de produção em execução através da porta 3306, eu configurar o backup via porta 3307.
No entanto, quando tentou iniciar uma outra versão através da porta 3307 em um diretório mysql_restore mas eu tive alguns erros ....
Então, eu chequei primeiro as permissões no diretório, garantiu que foi definido para 700 e de propriedade de mysql. Eu também garantiu que os diretórios dentro do diretório de dados foi definido para 700 e de propriedade de mysql. O restante dos arquivos tudo pronto para 600 (-rw-rw ----). Apenas para ser seguro eu também garantiu que o disco não estava cheio.
Então, o log de erro mostra problemas de permissão, mas à primeira vista todas as permissões estão corretas. Então o que é?
Bem, se eu estivesse no RHEL, ou actividades afins, eu pensaria em SELinux. Foi bloqueá-lo de alguma forma.
O Ubuntu AppArmor precisava ser revisto neste caso.
Observe que o padrão "var / lib / mysql" está sendo abordado. O diretório restaurar eu criei não foi embora. Assim, acrescentando que e um reinício do AppArmor Eu era então capaz de iniciar o MySQL com sucesso.
URLs adicionais para a revisão, se necessário:
Então, hoje eu acontecem a necessidade de restaurar um banco de dados MySQL a partir de backups para que eu pudesse recuperar algumas tabelas. Enquanto eu deixei ele de banco de dados de produção em execução através da porta 3306, eu configurar o backup via porta 3307.
No entanto, quando tentou iniciar uma outra versão através da porta 3307 em um diretório mysql_restore mas eu tive alguns erros ....
/usr/bin/mysqld_safe --defaults-file=/etc/my_3307.cnf
[Warning] Can't create test file /var/lib/mysql_restore/localhost.lower-test
[Warning] Can't create test file /var/lib/mysql_restore/localhost.lower-test
Can't find file: './mysql/plugin.frm' (errno: 13)
InnoDB: Completed initialization of buffer pool
InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
# perror 13
OS error code 13: Permission denied
Então, eu chequei primeiro as permissões no diretório, garantiu que foi definido para 700 e de propriedade de mysql. Eu também garantiu que os diretórios dentro do diretório de dados foi definido para 700 e de propriedade de mysql. O restante dos arquivos tudo pronto para 600 (-rw-rw ----). Apenas para ser seguro eu também garantiu que o disco não estava cheio.
Então, o log de erro mostra problemas de permissão, mas à primeira vista todas as permissões estão corretas. Então o que é?
Bem, se eu estivesse no RHEL, ou actividades afins, eu pensaria em SELinux. Foi bloqueá-lo de alguma forma.
O Ubuntu AppArmor precisava ser revisto neste caso.
# cat /etc/apparmor.d/usr.sbin.mysqld
...
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
...
Observe que o padrão "var / lib / mysql" está sendo abordado. O diretório restaurar eu criei não foi embora. Assim, acrescentando que e um reinício do AppArmor Eu era então capaz de iniciar o MySQL com sucesso.
# vi /etc/apparmor.d/usr.sbin.mysqld
...
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/var/lib/mysql_restore/ r,
/var/lib/mysql_restore/** rwk,
...
/etc/init.d/apparmor {start|stop|restart|reload|force-reload|status|recache}
/var/lib/mysql_restore# /etc/init.d/apparmor restart
...
/usr/bin/mysqld_safe --defaults-file=/etc/my_3307.cnf
...
# mysql -P 3307 --socket=/var/lib/mysql_restore/mysqld_3307.sock
URLs adicionais para a revisão, se necessário: