Impossibile ripristinare la password di root di MySQL, ho provato di tutto


9

Bene, chiariamo innanzitutto che ho letto tutte le domande di Ask Ubuntu su questo problema e ho seguito tutti i passaggi dai documenti ufficiali:

help.ubuntu.com

dev.mysql.com

Sto usando Ubuntu 16.04.1 LTS

Quindi prima che qualcuno suggerisca qualcosa che probabilmente ho già provato, mostrerò cosa ho fatto:

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

MySQL si è arrestato correttamente.

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

Qui non so se funzionasse o meno, quindi seguo comunque i passaggi.

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:/#

Sembra che non funzioni, poiché il servizio non è avviato. Poiché non posso continuare con i passaggi successivi, provo l'altro metodo (eliminazione).

Dopo aver usato:

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

Provo il passaggio successivo:

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:/#

Poiché anche questo non funziona, ho provato altri metodi citati sul web mysql:

Quindi uccido il processo mysql come indicato lì e quindi 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:/#

Ora è quando stavo uscendo dalle opzioni, quindi provo anche un altro metodo menzionato qui su 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 ora sono davvero senza opzioni, quindi qualsiasi suggerimento è il benvenuto.

Risposte:


16

Ho avuto lo stesso problema e l'ho risolto eseguendo questa riga:

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

prima di eseguire questa riga:

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

Per me, questi passaggi hanno funzionato meglio.

Penso che ci sia un modo più pulito per farlo, ma per me è stata una soluzione rapida ed efficiente.


1
grazie, questo ha funzionato;)
Ilovelinux,

Succede su mysql 5.7. Quando si interrompe il servizio mysql / var / run / mysqld viene rimosso e ricreato quando si riavvia il servizio.
Capy,

1

Non sono riuscito a reinstallare MySQL a prescindere da ciò che ho provato, ho solo bisogno di provare a ripristinare la password.

Ho dovuto seguire questa strada su Ubuntu 16.04.1 LTS. Ho trascorso un'ora o più a provare tutti gli altri suggerimenti dal sito Web MySql a tutto ciò che riguarda SO così come le Domande e risposte di AskUbuntu, e finalmente ho funzionato con:

Nota: mentre mostrava Enter password per root utente, non avevo la password originale quindi ho appena inserito la stessa password da utilizzare come nuova password.

Nota: non c'era /var/log/mysqld.log solo /var/log/mysql/error.log

Nota anche che questo non ha funzionato per me:
sudo dpkg-reconfigure mysql-server-5.7

Né ha fatto:
sudo dpkg-reconfigure --force mysql-server-5.5

Crea directory di servizio MySQL.
sudo mkdir /var/run/mysqld

Autorizzare l'utente MySQL a scrivere nella directory di servizio.
sudo chown mysql: /var/run/mysqld

Poi:

  1. uccide l'attuale mysqld pid
  2. esegui mysqld con sudo / usr / sbin / mysqld &
  3. run / usr / bin / mysql_secure_installation

    Output da mysql_secure_installation

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

    Protezione della distribuzione del server MySQL.

    Inserisci la password per l'utente root:

    VALIDATE PLUGIN PASSWORD può essere utilizzato per testare le password e migliorare la sicurezza. Controlla la forza della password e consente agli utenti di impostare solo quelle password che sono abbastanza sicure. Desideri installare il plug-in VALIDATE PASSWORD?

    Premere y | Y per Sì, qualsiasi altro tasto per No: no Uso della password esistente per root. Cambia la password per root? ((Premere y | Y per Sì, qualsiasi altro tasto per No): y

    Nuova password:

    Reinserisci nuova password: per impostazione predefinita, un'installazione MySQL ha un utente anonimo, che consente a chiunque di accedere a MySQL senza che sia necessario creare un account utente. Questo è inteso solo per i test e per rendere l'installazione un po 'più fluida. È necessario rimuoverli prima di trasferirsi in un ambiente di produzione.

    Rimuovere utenti anonimi? (Premere y | Y per Sì, qualsiasi altro tasto per No): y Successo.

    Normalmente, root dovrebbe essere autorizzato a connettersi solo da 'localhost'. Questo assicura che qualcuno non possa indovinare la password di root dalla rete.

    Non consentire l'accesso root da remoto? (Premere y | Y per Sì, qualsiasi altro tasto per No): y Successo.

    Per impostazione predefinita, MySQL viene fornito con un database denominato "test" a cui chiunque può accedere. Anche questo è destinato esclusivamente ai test e deve essere rimosso prima di trasferirsi in un ambiente di produzione.

    Rimuovere il database di prova e accedervi? (Premere y | Y per Sì, qualsiasi altro tasto per No): y

    • Eliminazione del database dei test ... Esito positivo.

    • Rimozione dei privilegi sul database di test ... Operazione riuscita.

    Il ricaricamento delle tabelle dei privilegi garantirà che tutte le modifiche apportate finora abbiano effetto immediato.

    Ricarica le tabelle dei privilegi ora? (Premere y | Y per Sì, qualsiasi altro tasto per No): y Successo.

    Tutto fatto!


0

Ho avuto lo stesso problema e l'ho risolto con:

# /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';

(Qui, authentication_stringcontiene il campo password.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.