Problema ao reiniciar o servidor MySQL instalado através do aptitude no Ubuntu Lucid Lynx

1

Estou usando o Ubuntu Lucid Lynx (10.04) e instalei o servidor MySQL através do aptitude. A instalação automaticamente adicionou um usuário chamado mysql (ele não existia no arquivo / etc / passwd no início e lá existe após a instalação) e iniciou o servidor MySQL.

Então eu precisei modificar my.cnf (para habilitar o acesso remoto ao servidor MySQL). Quando reiniciei o servidor MySQL com

$ sudo /etc/init.d/mysql restart

pendure. Mas exibir processos pelo comando "top" em outro terminal indicava que o servidor MySQL estava sendo executado com o usuário root. Mas my.cnf define claramente

user = mysql

Então eu tentei

$ sudo service mysql restart

E o resultado foi ainda pior. Ele não iniciou o servidor MySQL.

Tanto quanto me lembro, nunca encontrei um problema semelhante nas versões anteriores do Ubuntu.

Então, minhas perguntas são:

  1. Como posso iniciar o servidor MySQL com um usuário chamado mysql no Ubuntu Lucid Lynx (10.04)?

  2. Qual é a maneira mais confiável de iniciar o servidor MySQL no Ubuntu Lucid Lynx (10.04),

    /etc/init.d/mysql start

    ou

    serviço mysql start

    ou

    inicie o mysql

    e qual é a diferença?

Obrigado antecipadamente.

Tadatoshi

    
por user46767 24.06.2010 / 03:02

4 respostas

2

/etc/init.d/xxxx start é usado para iniciar serviços usando scripts init do SysV. O Ubuntu usa o upstart em vez do SysV init e os scripts init estão sendo convertidos em tarefas nativas do upstart. Normalmente, os scripts de inicialização para trabalhos convertidos exibem um aviso e chamam o upstart .

start xxxx é usado com serviços usando upstart e não funciona com serviços usando o SysV init.

service xxxx start escolhe automaticamente o caminho certo, por isso é seguro usar sempre o serviço

Até onde eu sei, o MySQL foi convertido para usar o upstart em 10.04

    
por 24.06.2010 / 10:38
2

Obrigado, Florian e user46528,

Com base na resposta de Florian, comecei a usar apenas "service mysql start".

Depois da resposta do user46528, comecei a investigar o problema.

Em suma, descobriu-se que o problema estava configurando bind-address para o endereço IP do servidor em my.cnf.

Os principais problemas que encontrei são:

  • Se o Amazon EC2 for usado, o bind-address deve ser definido para o endereço IP privado.

  • Uma vez que "service mysql start" falha devido ao problema de bind-address em my.cnf no Ubuntu Lucid Lynx, não importa o que seja feito para resolvê-lo, ele continua pendente. Eu precisava definir o endereço de ligação para um endereço IP correto e reiniciar o Ubuntu.

A explicação mais detalhada do que aconteceu é:

  1. Estou usando o Amazon EC2, que tem endereço IP público e endereço IP privado para cada instância, no meu caso, instância do Ubuntu Lucid Lynx.

  2. Com a configuração de endereço de ligação padrão em my.cnf, que é bind-address = 127.0.0.1 (localhost), "service mysql stop" e "service mysql start" funcionaram.

  3. Em my.cnf, alterei o endereço de ligação para o endereço IP público do Amazon EC2. Então "service mysql stop" funcionou mas "service mysql start" travou.

  4. Em /var/log/mysql/error.log, vi "[ERROR] Impossível iniciar servidor: Vincular na porta TCP / IP: Não é possível atribuir o endereço solicitado".

  5. Em my.cnf, alterei o endereço de ligação para o endereço IP privado do Amazon EC2. Então "service mysql stop" e "service mysql start" param.

  6. Em my.cnf, alterei o endereço de ligação de volta para o 127.0.0.1 padrão. Ainda assim, "service mysql stop" e "service mysql start" travam.

  7. Em my.cnf, alterei o endereço de ligação para o endereço IP privado do Amazon EC2. Então reiniciei o servidor Linux (pelo comando de reinicialização do Amazon EC2). Então o servidor MySQL iniciou corretamente com o usuário chamado mysql.

  8. "sudo netstat -na" exibiu a porta 3306 (porta para o servidor MySQL) com o endereço IP privado com o estado "LISTEN".

  9. Acessar a porta de outra instância do Amazon EC2 por "telnet private-ip 3306" indicou que ela está conectada.

Obrigado novamente por sua ajuda. Sem eles, não consegui resolver o problema.

Atenciosamente, Tadatoshi

    
por 25.06.2010 / 00:12
1

se não começou, ou seja, ps ax | O grep mysql não mostra o mysql safe_mysqld e o mysqld rodando, dê uma olhada em /var/lib/mysql/hostname.err (onde hostname é o nome do host da sua máquina) e ele possui um log detalhado. reiniciar no pacote padrão faz uma parada, iniciar, mas, eu me pergunto se o mysqld não está realmente parando.

/etc/init.d/mysql stop

ps ax | grep mysql (verifique se não há processos em execução)

/etc/init.d/mysql start

agora, se você está olhando para os processos, o mysqld_safe é executado como root, o processo mysqld é executado como mysql. Se o mysqld travar, o safe_mysqld fará um loop e tentará reiniciar o mysql. É safe_mysqld ou mysqld o processo que você viu executando como root?

    
por 24.06.2010 / 06:27
0

O padrão my.cnf diz port = 3306 e bind-address = 127.0.0.1 . Se você não tiver uma interface de loopback configurada, essa ligação falhará.

Para criar uma interface de loopback:

ifconfig lo up 127.0.0.1

    
por 20.07.2010 / 17:48