Não foi possível redefinir a senha root do MySQL, tentei de tudo

9

Bem, primeiro vamos esclarecer que li todas as perguntas do Ask Ubuntu sobre esse problema e segui todas as etapas dos documentos oficiais:

help.ubuntu.com

dev.mysql.com

Estou usando o Ubuntu 16.04.1 LTS

Portanto, antes que alguém sugira algo que provavelmente já tentei, vou mostrar o que fiz:

root@localhost:/# sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.

O MySQL parou corretamente.

root@localhost:/# sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 3316
root@localhost:/#

Aqui eu não sei se isso estava funcionando ou não, então eu sigo as etapas de qualquer maneira.

root@localhost:/# mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
root@localhost:/#

Parece que não funciona, pois o serviço não foi iniciado. Como não posso continuar com as próximas etapas, tento o outro método (limpeza).

Após o uso:

sudo apt-get --purge remove
sudo apt-get install

Eu tento o próximo passo:

root@localhost:/# mysqladmin -u root password MyNewPassword
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
root@localhost:/#

Como isso também não funciona, tentei outros métodos mencionados na web do mysql:

Então eu mato o processo mysql como apontado lá e então eu uso

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &
[1] 5267
root@localhost:/# 2017-02-01T12:47:49.250083Z mysqld_safe Logging to syslog.
2017-02-01T12:47:49.252427Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.254765Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.257045Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

[1]+  Salida 1                mysqld_safe --init-file=/home/me/mysql-init
root@localhost:/#

Agora é quando eu estava ficando sem opções, então também tento outro método mencionado aqui no Ask Ubuntu:

root@localhost:/# sudo dpkg-reconfigure mysql-server-5.7
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.17, use --force if you still need to run mysql_upgrade
root@localhost:/#

E agora estou sem opções, então qualquer sugestão é bem-vinda.

Ilovelinux
fonte

Respostas:

16

Eu tive o mesmo problema e resolvi-o executando esta linha:

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld

antes de executar esta linha:

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &

Para mim, essas etapas funcionaram melhor.

Eu acho que existe uma maneira mais limpa de fazer isso, mas para mim, foi uma solução rápida e eficiente.

odradek
fonte
11
thx, que fez o truque;)
Ilovelinux
Isso acontece no mysql 5.7. Quando você para, o serviço mysql / var / run / mysqld é removido e recriado quando você inicia o serviço novamente.
quer
1

Não consegui reinstalar o mysql, não importa o que eu tentasse, acabei precisando apenas tentar redefinir a senha.

Eu tive que seguir esta rota no Ubuntu 16.04.1 LTS. Passei uma hora ou mais tentando todas as outras sugestões do site MySql para tudo sobre o SO, bem como as perguntas e respostas do AskUbuntu, finalmente consegui trabalhar com:

Nota: enquanto mostrava Digite a senha para o usuário root, eu não tinha a senha original, então acabou de inserir a mesma senha para ser usada como a nova senha.

Nota: não havia /var/log/mysqld.log apenas /var/log/mysql/error.log

Observe também que isso não funcionou para mim:
sudo dpkg-reconfigure mysql-server-5.7

Nem:
sudo dpkg-reconfigure --force mysql-server-5.5

Crie o diretório de serviço do MySQL.
sudo mkdir /var/run/mysqld

Dê ao usuário do MySQL permissão para gravar no diretório de serviço.
sudo chown mysql: /var/run/mysqld

Então:

  1. matar o atual mysqld pid
  2. execute o mysqld com o sudo / usr / sbin / mysqld e
  3. execute / usr / bin / mysql_secure_installation

    Saída de mysql_secure_installation

    root @ myServer: ~ # / usr / bin / mysql_secure_installation

    Protegendo a implantação do servidor MySQL.

    Digite a senha para a raiz do usuário:

    O VALIDAR SENHA PLUGIN pode ser usado para testar senhas e melhorar a segurança. Ele verifica a força da senha e permite que os usuários definam apenas as senhas que são suficientemente seguras. Deseja configurar o plugin VALIDATE PASSWORD?

    Pressione y | Y para Sim, qualquer outra tecla para Não: não Usando a senha existente para root. Alterar a senha para root? ((Pressione y | Y para Sim, qualquer outra tecla para Não): y

    Nova senha:

    Redigite a nova senha: Por padrão, uma instalação do MySQL possui um usuário anônimo, permitindo que qualquer pessoa faça login no MySQL sem precisar ter uma conta de usuário criada para eles. Isso é destinado apenas para testes e para tornar a instalação um pouco mais suave. Você deve removê-los antes de passar para um ambiente de produção.

    Remover usuários anônimos? (Pressione y | Y para Sim, qualquer outra tecla para Não): y Sucesso.

    Normalmente, o root só deve ter permissão para se conectar a partir de 'localhost'. Isso garante que alguém não consiga adivinhar a senha raiz da rede.

    Proibir o login root remotamente? (Pressione y | Y para Sim, qualquer outra tecla para Não): y Sucesso.

    Por padrão, o MySQL vem com um banco de dados chamado 'teste' que qualquer pessoa pode acessar. Isso também se destina apenas a testes e deve ser removido antes de passar para um ambiente de produção.

    Remover banco de dados de teste e acessar a ele? (Pressione y | Y para Sim, qualquer outra tecla para Não): y

    • Soltando banco de dados de teste ... Sucesso.

    • Removendo privilégios no banco de dados de teste ... Sucesso.

    Recarregar as tabelas de privilégios garantirá que todas as alterações feitas até agora entrem em vigor imediatamente.

    Recarregar tabelas de privilégios agora? (Pressione y | Y para Sim, qualquer outra tecla para Não): y Sucesso.

    Tudo feito!

JGlass
fonte
0

Eu tive o mesmo problema e resolvi-o com:

# /etc/init.d/mysql stop
# service mysql stop
# mkdir -p /var/run/mysqld
# chown mysql:mysql /var/run/mysqld
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=password('1234') where user='root';

(Aqui, authentication_stringmantém o campo da senha.)

Rajani
fonte