Ho installato MySQL e durante l'installazione mi è stata chiesta una password che ho inserito, ma ora il mio insegnante dice che dovremmo essere in grado di accedere come root senza alcuna password.
Funziona ma non ottengo alcun privilegio:
Questo non funziona:
Nemmeno questo
Risposta accettata:
Causa del problema
La configurazione predefinita per l'accesso come root
utente in MySQL 5.7 richiede l'uso di un socket di autenticazione. Questo può essere verificato interrogando l'user
tabella:
mysql> select user,authentication_string,plugin from user where user='root';
+------+-----------------------+-------------+
| user | authentication_string | plugin |
+------+-----------------------+-------------+
| root | | auth_socket |
+------+-----------------------+-------------+
1 row in set (0.00 sec)
Dalla documentazione:
Il plug-in socket controlla se il nome utente del socket (il nome utente del sistema operativo
) corrisponde al nome utente MySQL specificato dal programma client
al server. Se i nomi non corrispondono, il plug-in verifica
se il nome utente del socket corrisponde al nome specificato nella colonna
stringa_autenticazione della riga della tabella di sistema mysql.user. Se viene trovata una corrispondenza
, il plug-in consente la connessione.
In altre parole, mysql per impostazione predefinita non ha la password di root impostata:devi eseguire phpMyAdmin come root o tramite sudo
(entrambi sono una cattiva idea per motivi di sicurezza), oppure modifichi il metodo di autenticazione e reimposta la password di root come mostrato nel tutorial di Digital Ocean.
Nota che a parte lo stesso nome, gli utenti MySQL e gli utenti del sistema non sono gli stessi. Puoi avere un utente MySQL jdoe
e non hanno tale utente sul sistema host. Quindi, root
è l'utente root di MySQL, non l'utente di sistema.
Passaggi per modificare plug-in e password:
-
apri il terminale ed esegui
sudo mysql -u root
. Dovresti vedere un messaggio di saluto emysql>
richiesta. Questa è la shell MySQL, che è diversa dalla shell della riga di comando, quindi qui sono accettate solo le istruzioni SQL. -
Immettere la seguente sequenza di query SQL:
mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> UPDATE user SET plugin='mysql_native_password',authentication_string=PASSWORD('newpassword') WHERE user = 'root'; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1
-
Esci e prova ad accedere:
mysql> exit Bye $ sudo systemctl restart mysql $ sudo mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.21-1 (Debian) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Se tutto va bene, dovresti essere in grado di accedere da phpMyAdmin tramite la nuova password. Se qualcosa va storto, prova a riavviare il server senza il controllo delle autorizzazioni (questo è il passaggio n. 3 nel tutorial di Digital Ocean). Per altri problemi, sentiti libero di porre un'altra domanda qui o su Amministratori database:Stack Exchange
Correlati:creare file LOG durante la creazione di più file DATI per tempdb?