Não é possível iniciar o serviço MySQL em uma VM recentemente atualizada

3

Eu tenho uma VM executando o servidor Ubuntu que acabei de atualizar para o 14.04. A VM fornece acesso a um banco de dados MySQL. No entanto, após a atualização, o banco de dados se recusa a iniciar e eu não sei o suficiente para descobrir:

root@vm-1 ~ $ service mysql start
start: Job failed to start

Eu verifiquei /var/log/mysql/error.log e encontrei:

141001 20:23:10 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
141001 20:23:10 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
141001 20:23:10 [Note] Server socket created on IP: '127.0.0.1'.
141001 20:23:10 [ERROR] Can't start server : Bind on unix socket: Permission denied
141001 20:23:10 [ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld.sock ?
141001 20:23:10 [ERROR] Aborting

141001 20:23:10  InnoDB: Starting shutdown...
141001 20:23:11  InnoDB: Shutdown completed; log sequence number 24590151085
141001 20:23:11 [Note] /usr/sbin/mysqld: Shutdown complete

Você pode encontrar todo o conteúdo do arquivo aqui . Note que eu o apaguei logo antes de executar o comando service mostrado acima, então tudo que existe de uma única tentativa de iniciar o serviço MySQL.

Também verifiquei o óbvio:

$ ps ax | grep mysql
 3623 pts/1    S+     0:00 grep --color mysql
$ rm /var/run/mysqld/mysqld.sock
rm: cannot remove ‘/var/run/mysqld/mysqld.sock’: No such file or directory
$ netstat | grep 3306

Verifiquei se o diretório do banco de dados tem as permissões corretas:

$ chown -R mysql:root /data/database/

Eu tentei executar strace , mas não vi nada óbvio. Eu entendo muito pouco disso, então você pode encontrar a saída aqui .

Por fim, meu /etc/mysql/my.cnf é:

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0
[mysqld]
user        = mysql
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /data/database
tmpdir      = /tmp
skip-external-locking
bind-address        = 127.0.0.1
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8
myisam-recover         = BACKUP
query_cache_limit   = 1M
query_cache_size        = 16M
log_error                = /var/log/mysql/error.log
expire_logs_days    = 10
max_binlog_size         = 100M
[mysqldump]
quick
quote-names
max_allowed_packet  = 16M
[mysql]
[isamchk]
key_buffer      = 16M
!includedir /etc/mysql/conf.d/

Eu tentei alterar a linha bind-address acima para 0.0.0.0 , 127.0.0.0 e 127.0.1.1 (este porque eu tenho uma linha 127.0.1.1 foo no meu /etc/hosts onde foo é o nome de host da minha VM) e 10.1.1.213 , que é o IP interno real da máquina na minha rede. Nenhum deles fez qualquer diferença. Eu também tentei comentar a linha bind-address por boa medida e idem.

Detalhes do meu sistema:

$ cat /etc/issue
Ubuntu 14.04.1 LTS \n \l

$ dpkg -s mysql-server | grep version
Version: 5.5.38-0ubuntu0.14.04.1
    
por terdon 01.10.2014 / 20:29

1 resposta

1

A questão estava de fato relacionada ao apparmor. Por algum motivo, essas duas linhas foram comentadas no novo arquivo /etc/apparmor.d/usr.sbin.mysql :

#  /var/lib/mysql/ r,  
#  /var/lib/mysql/** rwk,

Descomentá-los corrigiu o problema. Agradecemos a @Belrog e @slm apontou-me na direção certa.

    
por 02.10.2014 / 15:39