Ho una soluzione!
Quando reimposti la password di root al passaggio 2), modifica anche il plug-in di autenticazione in mysql_native_password
:
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
Questo mi ha permesso di accedere con successo!
Soluzione completa del codice
1. Innanzitutto, esegui questi comandi bash
sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql
2. Quindi esegui i comandi mysql => copia incolla manualmente nella CLI
use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user
flush privileges;
quit;
3. Esegui più comandi bash
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p
4. Problema con il socket (dai tuoi commenti)
Quando vedi un socket errore, è arrivata una community con 2 possibili soluzioni:
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(grazie a @Cerin)
Oppure
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(grazie a @Peter Dvukhrechensky)
Percorsi ciechi e possibili errori di margine
Usa 127.0.0.1 invece di localhost
mysql -uroot # "-hlocalhost" is default
Può portare a "file mancante" o errore slt.
mysql -uroot -h127.0.0.1
Funziona meglio.
Salta il problema del socket
Ho trovato molti modi per creare mysqld.sock
file, modificare i diritti di accesso o collegarlo simbolicamente. Dopo tutto, non era questo il problema.
Salta il my.cnf
file
Anche il problema non c'era. Se non sei sicuro, questo potrebbe aiutarti.
Per Ubuntu 18.04 e mysql 5.7
-
passaggio 1:
sudo mkdir /var/run/mysqld;
passaggio 2:
sudo chown mysql /var/run/mysqld
passaggio 3:
sudo mysqld_safe --skip-grant-tables
&esci (usa quit se è bloccato )
accedere a mysql senza password
-
passaggio 4:
sudo mysql --user=root mysql
passaggio 5:
SELECT user,authentication_string,plugin,host FROM mysql.user;
passaggio 6:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'
ora accedi con
mysql -u root -p <root>
Puoi provare come segue funziona per me.
Avvia server:
sudo service mysql start
Ora vai alla cartella dei calzini:
cd /var/run
Eseguire il backup del calzino:
sudo cp -rp ./mysqld ./mysqld.bak
Arresta server:
sudo service mysql stop
Ripristina il calzino:
sudo mv ./mysqld.bak ./mysqld
Avvia mysqld_safe:
sudo mysqld_safe --skip-grant-tables --skip-networking &
Inizia la shell mysql:
mysql -u root
Cambia password:
Quindi, scegli prima il database
mysql> use mysql;
Ora inserisci sotto due query:
mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root';
Ora andrà tutto bene.
mysql> flush privileges;
mysql> quit;
Per il controllo:
mysql -u root -p
fatto!
N.B, After login please change the password again from phpmyadmin
Ora seleziona hostname/phpmyadmin
Username: root
Password: 123456
Per maggiori dettagli, controlla Come reimpostare la password dimenticata phpmyadmin in Ubuntu
Il mysql
Il comando per impostazione predefinita utilizza i socket UNIX per connettersi a MySQL.
Se stai utilizzando MariaDB, devi caricare il plug-in Unix Socket Authentication sul lato server.
Puoi farlo modificando il [mysqld]
configurazione come questa:
[mysqld]
plugin-load-add = auth_socket.so
A seconda della distribuzione, il file di configurazione si trova solitamente in /etc/mysql/
o /usr/local/etc/mysql/
Se unix_socket=OFF
è impostato nella stessa sezione, abilitalo modificandolo in unix_socket=ON
o questa correzione non si applica.