Problemas ao redefinir a senha do MySQL em uma instância do Amazon EC2 'Amazon Linux'

2

Já lutei com a redefinição da senha root para o MySQL em um Amazon Linux hospedado no EC2. Versão:

mysql Ver 14.14 Distrib 5.5.42, for Linux (x86_64) using readline 5.1

Ao instalar, eu decidi que seria inteligente mudar a senha do root para algo seguro! Yay! Segurança! Exceto que não vou me logar com essa senha agora, então estou tentando redefini-la.

Eu segui as instruções aqui , mas não está funcionando. Eu pensei que poderia ser permissões no arquivo init, mas elas estão definidas para rwxrwxrwt , então provavelmente não, mas talvez? Nem mesmo com certeza quais arquivos de log verificar para ver onde está dando errado também.

Então, como posso redefinir com sucesso a senha do MySQL no EC2 Amazon Linux? O conjunto de instruções está vinculado ao trabalho ou a Amazon faz algo diferente?

Também eu perguntei isso em ServerFault , mas não foi "claro" o que eu estava perguntando. Eu diria que isso também é um pouco fora do assunto, mas…

    
por brandonscript 30.08.2015 / 19:02

3 respostas

1

Inspecionando a saída da execução de mysqld_safe , ela indica que está fazendo o log em /var/log/mysqld . A parte notável diz:

150830 6:32:18 [ERROR] /usr/libexec/mysqld: File '/home/ec2-user/mysql-init' not found (Errcode: 2)

Acontece que o root não pode acessar esse local. Moveu o arquivo para /tmp/mysql-init e, em seguida, a redefinição de senha funcionou.

    
por 30.08.2015 / 19:51
13

Não há nada de mágico em um Amazon Linux hospedado na instância do EC2. A razão pela qual todo mundo usa alguma variante do Linux é porque o Linux é o Linux.

Dito isto, é assim que eu reconfixo as senhas do MySQL root nos servidores Ubuntu se eu tiver problemas como esse. Os conceitos gerais devem funcionar para qualquer versão do Linux com apenas pequenos ajustes para lidar com detalhes específicos.

Primeiro, eu pararia o MySQL assim; este é o comando que eu usaria no Ubuntu:

sudo service mysql stop

Feito isso, inicie o MySQL novamente manualmente com o % opção--skip-grant-tables ; isso é considerado arriscado para alguns ambientes, pois basicamente lança o MySQL com todas as concessões / permissões concedidas a todos no mundo. Mas é o que você precisa fazer para corrigir o problema root :

sudo mysqld --skip-grant-tables &

Em algumas configurações, talvez seja necessário inserir o caminho completo para mysqld ou mysqld_safe para que isso funcione assim:

sudo /usr/bin/mysqld_safe --skip-grant-tables &

Agora, com o MySQL reiniciado com as concessões abertas para o mundo, faça login assim:

mysql -u root mysql

Isso basicamente conecta você como o usuário root ao banco de dados mysql , que gerencia todos os aspectos administrativos do acesso ao MySQL.

Agora execute esta consulta; é claro que altere YOURNEWPASSWORD para corresponder à nova senha desejada que você deseja atribuir ao usuário root :

UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE user='root'; FLUSH PRIVILEGES; exit;

Como você pode ver, é um comando concatenado que executa um UPDATE e, em seguida, um FLUSH PRIVILEGES para recarregar as tabelas de concessões do MYSQL e exit para sair do MySQL.

Com isso feito, você deve estar definido e root deve ter a senha redefinida para corresponder a qualquer YOURNEWPASSWORD que você alterou.

    
por 30.08.2015 / 19:55
0

Eu tenho lutado com isso por algumas horas e acabei de descobrir a solução.

No meu caso, eu estava tentando definir uma senha para o usuário root . Eu vi que quando eu corri select * from mysql.user; o usuário root tinha como plugin o valor socket . Eu simplesmente forcei a mudança a usar o mysql_native_password plugin executando este comando:

ALTER USER 'root'@'localhost' identified with mysql_native_password by 'password_goes_here'

    
por 05.10.2018 / 14:50