Eu instalei o servidor MySQL 5.5 no Ubuntu 12.04. Estou tentando iniciar o servidor MySQL em um arquivo de meia diferente. Por padrão, o MySQL roda em /var/run/mysqld/mysqld.sock.
Estou tentando executar o mesmo servidor em /var/run/mysqld/mysqld1.sock.
Para isso, fiz as seguintes alterações:
- Alterações para /etc/mysql/my.cnf
[cliente] port = 3306 socket = /var/run/mysqld/mysqld1.sock [mysqld_safe] socket = /var/run/mysqld/mysqld1.sock nice = 0 [mysqld] usuário = mysql pid-file = /var/run/mysqld/mysqld.pid ** socket = /var/run/mysqld/mysqld1.sock** port = 3306 basedir = / usr datadir = / var / lib / mysql tmpdir = / tmp lc-messages-dir = / usr / share / mysql
Também adicionei a seguinte linha ao /etc/apparmor.d/usr/sbin.mysqld
/var/run/mysqld/mysqld1.sock w,
/var/run/mysqld/mysqld[1-9,95.sock w,
Também mudei a propriedade do diretório / var / run / mysqld para usuário mysql.
ls -lA / var / run / | grep mysqld
drwxrwxrwx 2 mysql mysql 40 dez 31 17:24 mysqld
No entanto, quando tento iniciar o servidor MySQL, recebo o seguinte erro (como usuário root)
$ mysqld --user = mysql --verbose 121231 18:40:56 [Nota] O plug-in 'FEDERATED' está desativado. 121231 18:40:56 InnoDB: o heap de memória InnoDB está desativado 121231 18:40:56 InnoDB: Mutexes e rw_locks usam built-in atômicos do GCC 121231 18:40:56 InnoDB: As tabelas compactadas usam o zlib 1.2.3.4 121231 18:40:56 InnoDB: inicializando o buffer pool, tamanho = 128.0M 121231 18:40:56 InnoDB: inicialização concluída do buffer pool 121231 18:40:56 InnoDB: o formato de arquivo mais alto suportado é o Barracuda. 121231 18:40:57 InnoDB: aguardando o início dos encadeamentos em segundo plano 121231 18:40:58 InnoDB: 1.1.8 iniciado; número de sequência do log 1595685 121231 18:40:58 [Nota] Nome do host do servidor (endereço de ligação): '127.0.0.1'; porto: 3306 121231 18:40:58 [Nota] - '127.0.0.1' resolve para '127.0.0.1'; 121231 18:40:58 [Nota] Soquete do servidor criado no IP: '127.0.0.1'. ** `121231 18:40:58 [ERRO] Não é possível iniciar o servidor: vincular no soquete unix: permissão negada` ** 121231 18:40:58 [ERRO] Você já tem outro servidor mysqld em execução no soquete: /var/run/mysqld/mysqld1.sock? 121231 18:40:58 [ERRO] Interrompendo ** 121231 18:40:58 InnoDB: Iniciando o desligamento ... 121231 18:40:58 InnoDB: Encerramento concluído; número de sequência do log 1595685 121231 18:40:58 [Nota] mysqld: Encerramento completo
Se eu iniciar o servidor com o arquivo de soquete padrão, posso iniciar o servidor. Eu pesquisei no Google sobre esse problema, mas só encontrei soluções sugerindo que seja um problema de permissão. No entanto, as permissões parecem boas. Alguns sugeriram que o AppArmor pode ser uma causa, mas também verifiquei - o snippet está colado acima.
Alguém pode fornecer algumas pistas?
[EDITAR]
Eu vejo a seguinte saída em /var/log/syslog
.
2 de janeiro 12:09:34 praveshp-lt mysqld: 130102 12:09:34 [Nota] O plug-in 'FEDERATED' está desativado. 2 de janeiro 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: O heap de memória do InnoDB está desativado 2 de janeiro 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Mutexes e rw_locks usam built-in atômicos do GCC 2 de janeiro 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: As tabelas compactadas usam o zlib 1.2.3.4 2 de janeiro 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Inicializando buffer pool, tamanho = 128.0M 2 de janeiro 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Inicialização concluída do buffer pool 2 de janeiro 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: o formato de arquivo mais alto suportado é o Barracuda. 2 de janeiro 12:09:35 praveshp-lt mysqld: 130102 12:09:35 InnoDB: Aguardando o início dos threads em segundo plano 2 de janeiro 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: 1.1.8 iniciado; número de sequência do log 1595685 2 de janeiro 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Nota] Nome do host do servidor (endereço de ligação): '127.0.0.1'; porto: 3307 2 de janeiro 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Nota] - '127.0.0.1' resolve para '127.0.0.1'; 2 de janeiro 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Nota] Soquete do servidor criado no IP: '127.0.0.1'. 2 de janeiro 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERRO] Não é possível iniciar o servidor: vincular no soquete unix: permissão negada 2 de janeiro 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERRO] Você já tem outro servidor mysqld em execução no soquete: /var/run/mysqld/mysqld1.sock? 2 de janeiro 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERRO] Interrompendo 2 de janeiro às 12:09:36 praveshp-lt mysqld: Jan 2 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: Iniciando o desligamento ... 2 de janeiro 12:09:36 kernel praveshp-lt: [7060.098580] type = 1400 audit (1357108776.036: 33): apparmor = "DENIED" operation = "mknod" parent = 6702 profile = "/ usr / sbin / mysqld" name = "/run/mysqld/mysqld1.sock" pid = 7039 comm = "mysqld" request_mask = "c" denied_mask = "c" fsuid = 116 ouid = 116 2 de janeiro 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: Encerramento concluído; número de sequência do log 1595685 2 de janeiro 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Nota] / usr / sbin / mysqld: Encerramento completo
Diz permissão negada, no entanto, parece que eu defini as permissões corretas.
/usr/local/mysql
e/tmp
. A necessidade de ser 775 no mínimo. 2. A permissão para o diretório do banco de dados mysql na/var/lib/
pasta deve sermysql:root
(chown mysql:root mysql
)/etc/apparmor.d/usr.sbin.mysqld
Existe uma comparação entre a versão antiga e a nova aqui: bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/…Respostas:
Observando esta linha na linha a seguir no log, parece que o Apparmor está negando acesso.
Para permitir isso, adicione um arquivo
/etc/apparmor.d/local/usr.sbin.mysqld
com a entrada abaixo e reinicie o MySQL.Obrigado a Rinzwind por apontar isso.
fonte