MySQL excluindo o arquivo sock e reclamou da permissão para isso

2

Esta é uma questão que está me deixando louca hoje:

Basicamente, eu compilei o MySQL a partir do código-fonte (MySQL 5.1.14 no Ubuntu 9.04 em uma máquina ARM), e aqui está o que aconteceu quando eu tentei rodá-lo:

/etc/init.d/mysql start
Starting MySQL.. * Manager of pid-file quit without updating file.

Pesquisando no log de erros, aqui está o que eu vejo:

110826 18:00:21 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
110826 18:00:22 [ERROR] Can't start server : Bind on unix socket: Permission denied
110826 18:00:22 [ERROR] Do you already have another mysqld server running on socket: /tmp/mysql.sock ?
110826 18:00:22 [ERROR] Aborting

110826 18:00:22 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete

110826 18:00:22 mysqld_safe mysqld from pid file /usr/local/mysql/var/Serv.pid ended

Então, aqui está o que eu tentei fazer:

touch mysql.sock
chown mysql:mysql mysql.sock
chmod 1777 mysql.sock

E tudo parece estar bem:

ls -la | grep mysql.sock
-rwxrwxrwt  1 mysql mysql        0 2011-08-26 18:02 mysql.sock

Mas adivinhe, toda vez que eu tentei reiniciar o MySQL, o mesmo erro aconteceu e parece que, por algum motivo, o arquivo do sock desapareceu.

Eu estava executando todo o processo como root, por isso a permissão não deve ser um problema.

Alguma sugestão? Obrigado!

    
por zhuanyi 27.08.2011 / 00:16

3 respostas

0

chmod 1777 /tmp e tente novamente.

    
por 27.08.2011 / 17:20
0

Você realmente não deve criar este arquivo manualmente, este não é um arquivo comum, este é um soquete nomeado e deve estar listado em ls output algo como srwxrwxrwx 1 mysql mysql 0 Aug 20 23:49 mysql.sock= . Tem certeza que outro mysqld não está iniciado no mesmo socket?

    
por 27.08.2011 / 00:23
0

O Ubuntu está configurado para usar uma estrutura de segurança, como SELinux, SMACK ou AppArmor, que precisaria ser modificada para permitir que sua instância do mysql personalizada fosse executada? Os arquivos de banco de dados que o mysql precisa de propriedade do usuário mysql, como mysql, dão privilégios de root quando são executados?

Como um lado note que sua tentativa de criar um arquivo de soquete está incorreta, você criou um arquivo regular e não um soquete, você precisa usar o mksock para criar um arquivo de soquete no sistema de arquivos.

    
por 27.08.2011 / 00:28