mysql non richiede la password di root durante l'installazione

30

Ho usato apt install mysql-server per installare MySQL su Ubuntu 16.04 ma durante l'installazione non ha richiesto la password di root.

Dopo l'installazione ho ottenuto ERROR 1045 quando ho provato ad accedere come root e mysql_secure_installation ha lanciato lo stesso errore. I purge d e autoremove d quindi reinstallato ma non funziona.

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

Questo è il mio log di installazione:

The following additional packages will be installed:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7
  mysql-server-core-5.7
Suggested packages:
  mailx tinyca
The following NEW packages will be installed:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  mysql-server-core-5.7
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/17,9 MB of archives.
After this operation, 160 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Preconfiguring packages ...
Selecting previously unselected package libaio1:amd64.
(Reading database ... 227144 files and directories currently installed.)
Preparing to unpack .../libaio1_0.3.110-2_amd64.deb ...
Unpacking libaio1:amd64 (0.3.110-2) ...
Selecting previously unselected package mysql-client-core-5.7.
Preparing to unpack .../mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Unpacking mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Selecting previously unselected package mysql-client-5.7.
Preparing to unpack .../mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...
Unpacking mysql-client-5.7 (5.7.12-0ubuntu1) ...
Selecting previously unselected package mysql-server-core-5.7.
Preparing to unpack .../mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Unpacking mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Selecting previously unselected package mysql-server-5.7.
Preparing to unpack .../mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...
Unpacking mysql-server-5.7 (5.7.12-0ubuntu1) ...
Selecting previously unselected package mysql-server.
Preparing to unpack .../mysql-server_5.7.12-0ubuntu1_all.deb ...
Unpacking mysql-server (5.7.12-0ubuntu1) ...
Processing triggers for libc-bin (2.23-0ubuntu3) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for systemd (229-4ubuntu4) ...
Processing triggers for ureadahead (0.100.0-19) ...
Setting up libaio1:amd64 (0.3.110-2) ...
Setting up mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Setting up mysql-client-5.7 (5.7.12-0ubuntu1) ...
Setting up mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.12, use --force if you still need to run mysql_upgrade
Setting up mysql-server (5.7.12-0ubuntu1) ...
Processing triggers for libc-bin (2.23-0ubuntu3) ...
    
posta spqa 03.05.2016 - 16:04

4 risposte

36

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

Tieni presente $ nei comandi. Questo sta specificando il prompt del terminale che si vede quando si digita il comando. Sta mostrando che è una riga di testo, ma e un vero comando del terminale digitato. Anche il prefisso " mysql> " è un prompt. Questo è il prompt che ottieni quando esegui mysql in modo interattivo.

Questo è il cli (riga di comando) per fare ciò:
(assicurati di interrompere il server corrente prima di eseguire i passaggi. il server può essere eseguito contemporaneamente.

$ 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 verrà eseguita all'interno di mysql se si dispone di MySQL 5.6 o inferiore:

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

In MySQL 5.7 o successivo

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

Da lì, esci (uccidi l'esecuzione di msqld) mysql e avvialo normalmente.

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

Ferma mysql:

$ sudo service mysql stop

Avvia mysql (normale):

$ sudo service mysql start

Elimina la sessione provvisoria in modalità provvisoria di mysql:

$ sudo mysqladmin shutdown
    
risposta data L. D. James 03.05.2016 - 16:27
18

Non chiederà la password durante l'installazione di mysql in Ubuntu 16.04 ma puoi impostarlo dopo l'installazione corretta nel seguente modo:

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

sudo mysql_secure_installation

Mostrerà:

  

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

     

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

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

  

OK, password utilizzata con successo, in corso ...

     

L'impostazione della password di root garantisce che nessuno possa accedere a MariaDB   utente root senza l'autorizzazione appropriata.

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

Password aggiornata correttamente! Ricaricamento delle tabelle dei privilegi ...   Successo!

PER UBUNTU 18.04 O mysql-server versione 5.7.22, QUESTO METODO NON FUNZIONERÀ

Per impostare la password di root in Ubuntu 18.04, Per prima cosa segui i primi tre comandi o i primi due passaggi di L.D. La risposta di James quindi esegui,

mysql> ALTER USER 'root'@'locahost' IDENTIFIED BY '<password>';

La password per l'utente root è impostata!

o

Poiché non esiste una password impostata 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 può quindi eseguire facilmente la query

ALTER USER 'root'@'locahost' IDENTIFIED BY '<password>';
    
risposta data d a i s y 04.05.2016 - 06:55
12

Apparentemente l'installazione di mysql-server in 16.04 (o qualsiasi installazione 5.7?) consente l'accesso root non tramite password, ma attraverso auth_socket plug-in. L'esecuzione di sudo mysql -u root (n.b.w / o una password) ti darà la console mysql mentre eseguendo il comando come non-root ti chiederà una password.

Sembrerebbe che cambiare la password non faccia molta differenza in quanto il backend auth non controlla nemmeno la password. C'è un articolo molto completo su come cambia il plugin e passa all'autenticazione della password .

    
risposta data carp 12.11.2016 - 10:57
0

Aggiungendo alla risposta principale, se sei bloccato

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

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

$ sudo mysql --user=root mysql

Se provi a farlo nella stessa finestra, si spegnerà il processo safemode di mysqld.

    
risposta data 9KSoft 15.09.2017 - 10:03

Leggi altre domande sui tag