mysql non richiede la password di root durante l'installazione


54

Ho usato apt install mysql-serverper installare MySQL su Ubuntu 16.04, ma durante l'installazione, non ho chiesto la password di root.

Dopo l'installazione ho avuto ERROR 1045quando ho provato ad accedere come roote ho mysql_secure_installationlanciato lo stesso errore. I purgeD e autoremoveD poi reinstallato, ma non funziona.

Come potrei risolvere questo? Posso impostare la password di root se non l'ho impostata durante l'installazione?

Questo è il mio registro di installazione:

Verranno installati i seguenti pacchetti aggiuntivi:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7
  mysql-server-core-5.7
Pacchetti suggeriti:
  mailx tinyca
Verranno installati i seguenti NUOVI pacchetti:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  mysql-server-core-5.7
0 aggiornati, 6 appena installati, 0 da rimuovere e 0 non aggiornati.
È necessario ottenere 0 B / 17,9 MB di archivi.
Dopo questa operazione, verranno utilizzati 160 MB di spazio su disco aggiuntivo.
Vuoi continuare? [Y / n] y
Preconfigurazione dei pacchetti ...
Selezione del pacchetto precedentemente non selezionato libaio1: amd64.
(Lettura del database ... 227144 file e directory attualmente installati.)
Preparazione per decomprimere ... / libaio1_0.3.110-2_amd64.deb ...
Disimballaggio di libaio1: amd64 (0.3.110-2) ...
Selezione del pacchetto precedentemente non selezionato mysql-client-core-5.7.
Preparazione per decomprimere ... / mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Disimballaggio mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Selezione del pacchetto precedentemente non selezionato mysql-client-5.7.
Preparazione per decomprimere ... / mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...
Disimballaggio mysql-client-5.7 (5.7.12-0ubuntu1) ...
Selezione del pacchetto precedentemente non selezionato mysql-server-core-5.7.
Preparazione per decomprimere ... / mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Disimballaggio mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Selezione del pacchetto precedentemente non selezionato mysql-server-5.7.
Preparazione per decomprimere ... / mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...
Disimballaggio mysql-server-5.7 (5.7.12-0ubuntu1) ...
Selezione del pacchetto mysql-server precedentemente non selezionato.
Preparazione per decomprimere ... / mysql-server_5.7.12-0ubuntu1_all.deb ...
Disimballaggio di mysql-server (5.7.12-0ubuntu1) ...
Trigger di elaborazione per libc-bin (2.23-0ubuntu3) ...
Trigger di elaborazione per man-db (2.7.5-1) ...
Trigger di elaborazione per systemd (229-4ubuntu4) ...
Trigger di elaborazione per ureadahead (0.100.0-19) ...
Configurazione di libaio1: amd64 (0.3.110-2) ...
Configurazione di mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Configurazione di mysql-client-5.7 (5.7.12-0ubuntu1) ...
Configurare mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Configurazione di mysql-server-5.7 (5.7.12-0ubuntu1) ...
update-alternatives: usare /etc/mysql/mysql.cnf per fornire /etc/mysql/my.cnf (my.cnf) in modalità automatica
Verifica se è necessario l'aggiornamento.
Questa installazione di MySQL è già stata aggiornata a 5.7.12, utilizzare --force se è ancora necessario eseguire mysql_upgrade
Configurazione di mysql-server (5.7.12-0ubuntu1) ...
Trigger di elaborazione per libc-bin (2.23-0ubuntu3) ...

Risposte:


61

È possibile ripristinare o impostare la password di root senza conoscere quella corrente avviando mysql senza caricare le tabelle di concessione.

Nota $nei comandi. Questo specifica il prompt del terminale che si vede quando si digita il comando. Sta mostrando che è una riga di testo, ma e un vero comando terminale digitato. Il mysql>prefisso " " è anche un prompt. Questo è il prompt che ricevi quando esegui mysql in modo interattivo.

Questa è la cli (riga di comando) per fare ciò:
(Assicurati di arrestare il server corrente prima di eseguire i passaggi. È possibile eseguire un solo server alla volta).

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld
$ sudo mysqld_safe --skip-grant-tables&

Ora puoi accedere come root senza password ed eseguire tutti i comandi, come in questo caso, imposta la password di root come root.

$ sudo mysql --user=root mysql

Questa è la password di root impostata che eseguirai all'interno di mysql se hai MySQL 5.6 o versioni precedenti:

mysql> update user set Password=PASSWORD('new-password') where user='root';
flush privileges;

In MySQL 5.7 o versioni successive

mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
flush privileges;

Da lì, uscire (kill the msqld in esecuzione) mysql e avviarlo normalmente.

Note sull'avvio e l'arresto del servizio mysql:

Stop mysql:

$ sudo service mysql stop

Avvia mysql (normale):

$ sudo service mysql start

Termina la sessione provvisoria in modalità provvisoria mysql:

$ sudo mysqladmin shutdown

11
in mysql 5.7.12 non esiste una colonna denominata password nella tabella utente. Quindi il seguente comando ha funzionato per me. aggiorna user set authentication_string = PASSWORD ('new-password') dove user = 'root';
Il codice

7
Ricevo ancoraERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
llamerr il

@ ErelSegal-Halevi Ci sono due cose che dovresti fare. Corri $ mysql_upgrade -u root -p. Prova anche il comando sopra dato da RP Singh.
LD James

Inoltre sto ancora ricevendo questo errore.
Jamie Hutber,

SET PASSWORD FOR 'root' = PASSWORD('your-password')se si utilizza mariadb
user1036719

37

Non richiederà la password durante l'installazione mysqlin Ubuntu 16.04 ma è possibile impostarla dopo aver eseguito correttamente l'installazione nel modo seguente:

Dopo il completamento dell'installazione di mysql, eseguire il comando:

sudo mysql_secure_installation

Mostrerà:

NOTA: ESEGUIRE TUTTE LE PARTI DI QUESTO SCRIPT È CONSIGLIATO A TUTTI I SERVER MariaDB IN USO DI PRODUZIONE! LEGGERE ATTENTAMENTE OGNI PASSO!

Per accedere a MariaDB per proteggerlo, avremo bisogno della password corrente per l'utente root. Se hai appena installato MariaDB e non hai ancora impostato la password di root, la password sarà vuota, quindi dovresti semplicemente premere Invio qui.

Enter current password for root (enter for none): (qui premi Invio)

OK, password utilizzata correttamente, passare a ...

L'impostazione della password di root garantisce che nessuno possa accedere all'utente root di MariaDB senza la corretta autorizzazione.

Set root password? [Y/n] y   (press 'y' to set new password)
New password: 
Re-enter new password:

Password aggiornata correttamente! Ricarica tabelle dei privilegi ... ... Successo!


Per Ubuntu 18.04 o mysql-serverversione 5.7.22, QUESTO METODO NON FUNZIONA

Per impostare la password di root in Ubuntu 18.04, per prima cosa segui i primi tre comandi o i primi due passaggi della risposta di LD James, quindi esegui,

mysql> alter user 'root'@'localhost' identified by '<password>';

La password per l'utente root è impostata!

O

Seguire questi passaggi per impostare la password di root in 18.04:

Poiché non è stata impostata alcuna password per l'utente root, è sufficiente accedere con una password vuota

sudo mysql -u root -p
Enter password: (press enter as no password is set)

dopo di che può facilmente eseguire query

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';

2
Il problema nel caso di questa domanda è che l'utente non è in grado di ricevere le istruzioni menzionate perché non conosce il current password for root.
LD James,

@LDJames sì, hai ragione. Non ricordo di ERRORE: 1405 quando corro mysql_secure_installationma ho sudo mysql_secure_installationlavorato per me. l'installazione di mysql non richiede la password. È successo con me lo stesso. e here press entersignifica premere Invio senza password.
margherita,

2
Come concede ubuntu 18.04 o debian 9+ non si connetterà con password vuota e anche dopo aver reimpostato il passaggio per root, rifiuta ancora di connettersi
chefarov

@chefarov Di fronte allo stesso problema, intensamente frustrante
RedactedProfile

Anzi, ho ancora lo stesso errore
Jamie Hutber il

17

Apparentemente l'installazione mysql-server su 16.04 (o qualsiasi installazione 5.7?) Consente l'accesso root non tramite password, ma attraverso il plugin auth_socket . L'esecuzione sudo mysql -u root(nb w / o password) ti darà la console mysql mentre l'esecuzione del comando come non root ti richiede una password.

Sembrerebbe che cambiare la password non faccia molta differenza poiché il backend di autenticazione non controlla nemmeno la presenza di una password. C'è un articolo molto completo su come cambiare il plugin e passare all'autenticazione con password .


4
Sono stato in grado di confermare con una nuova installazione di apt install mysql-serversenza specificare una password su 18.04. Il sintomo e la soluzione sono esattamente come descritti.
EricC,

quindi come diavolo mi connetto?
Jamie Hutber,

9

Dopo l'installazione basta:

1.

sudo mysql

(sì, nessun utente nessun passaggio)

2. Ora sei nella console mysql:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_new_pass';

3.

FLUSH PRIVILEGES;

  1. Questo è tutto. Ora puoi accedere alla console la prossima volta come al solito:

    mysql -u root -p my_new_pass


3
Ho provato molte altre risposte, ma questa ha funzionato su Amazon EC2
Haris ur Rehman,

2
Questa era la risposta corretta per WSL Ubuntu (Linux su Windows).
Fer García,

2
Questa è l'unica risposta che ha funzionato per me su Ubuntu 18.04 nuova installazione su Google Cloud.
Aakash,

1
Ha funzionato per me su Ubuntu 19.04. Ho eseguito mysql_secure_myinstallation, ma sembrava che la password di root non fosse impostata.
Jens Wagemaker,

1
Ho provato decine di soluzioni. Questo è stato il più semplice e l'unico che ha funzionato.
mreff555,

4
  1. c'è un account utente predefinito.

    $ vim /etc/mysql/debian.cnf 
    

    otterrai questo account da questo in questo modo:

    user     = debian-sys-maint
    password = nUZTARYslBsASzpw
    
  2. accedi con questo account

    $ mysql -u debian-sys-maint -p
    
  3. modifica la tua password di root

    mysql> show databases;
    
    mysql> use mysql;
    
    mysql> update user set authentication_string=PASSWORD("new_password") where user='root';
    
    mysql> update user set plugin="mysql_native_password";
    
    mysql> flush privileges;
    
    mysql> quit;
    
  4. riavvia mysql

    $ /etc/init.d/mysql restart;
    

allora puoi mysql -u root -pcon te le impostazioni precedenti.


Ho provato ogni altra soluzione, e questa è l'unica che ha funzionato per me. (Linux Mint 19.2).
ElectroBuddha,

0

Aggiungendo alla risposta principale, se sei bloccato a

" mysqld_safe Avvio del demone mysqld con database da / var / lib / mysql "

1 cosa da ricordare che devi usare un'altra finestra del terminale per inserire il seguente comando.

$ sudo mysql --user=root mysql

Se provi a farlo nella stessa finestra, chiuderà il processo mysqld safemode.


-1

Ecco come eseguire l'installazione mysql-servercon una richiesta di password terminale in Ubuntu 18.10.

  1. Scarica il repository APT MySQL tramite https://dev.mysql.com/downloads/repo/apt/
  2. cdnella tua directory in cui hai scaricato ed eseguito dpkg -i mysql-apt-config_0.8.13-1_all.deb(controlla il numero della tua versione)
  3. Dal menu di richiesta selezionare l'ultima opzione "ok" e poi di nuovo "ok".

  4. Aggiorna e installa mysql-server e mysql-client:

sudo apt update
sudo apt installa mysql-server mysql-client
  1. Digita la password di root nel promt.
  2. Seleziona "Use Legacy Authentication Method"se i tuoi framework / applicazioni in esecuzione (come laravel) che non supportano "Strong Password Encryption"ancora il nuovo , altrimenti se il tuo framework / applicazione supporta "Strong Password Encryption"quindi selezionalo.
  3. Accedi come root e controlla se funziona.
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.