GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la password di root predefinita per MySQL 5.7

MySQL 5.7 ha cambiato il modello sicuro:ora il login root MySQL richiede un sudo

La soluzione più semplice (e più sicura) sarà creare un nuovo utente e concedere i privilegi richiesti.

1. Connettiti a mysql

sudo mysql --user=root mysql

2. Crea un utente per phpMyAdmin

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Riferimento - https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7


Il server MySQL 5.7 era già installato di default sul mio nuovo Linux Mint 19.

Ma cos'è MySQL root parola d'ordine? Si scopre che:

L'installazione predefinita utilizza auth_socket per l'autenticazione, al posto delle password!

Consente un accesso senza password, a condizione che si sia effettuato l'accesso al sistema Linux con lo stesso nome utente. Per accedere come root MySQL user , si può usare sudo:

sudo mysql --user=root

Ma come modificare quindi la password di root? Per illustrare cosa sta succedendo, ho creato un nuovo utente "me", con privilegi completi, con:

mysql> CREATE USER 'me'@'localhost' IDENTIFIED BY 'my_new_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'me'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

Confronto tra "me" e "root":

mysql> SELECT user, plugin, HEX(authentication_string)  FROM mysql.user WHERE user = 'me' or user = 'root';
+------+-----------------------+----------------------------------------------------------------------------+
| user | plugin                | HEX(authentication_string)                                                 |
+------+-----------------------+----------------------------------------------------------------------------+
| root | auth_socket           |                                                                            |
| me   | mysql_native_password | 2A393846353030304545453239394634323734333139354241344642413245373537313... |
+------+-----------------------+----------------------------------------------------------------------------+

Poiché utilizza auth_socket, la password di root non può essere modificata:SET PASSWORD il comando fallisce e mysql_secure_installation des non ottiene nulla...

==> Per eliminare questa modalità di autenticazione alternativa e restituire il root di MySQL all'utente di utilizzare le password:

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

Una buona spiegazione.

Maggiori dettagli dal manuale MySQL.


Ci sono così tante risposte là fuori che dicono di reinstallare mysql o usare una combinazione di

mysqld_safe --skip-grant-tables

e/o

UPDATE mysql.user SET Password=PASSWORD('password')

e/o qualcos'altro...

... Niente di tutto ciò ha funzionato per me

Ecco cosa ha funzionato per me, su Ubuntu 18.04, dall'alto

Con un merito speciale a questa risposta per avermi tirato fuori dalla frustrazione su questo ...

$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf

Nota le righe che leggono:

user     = debian-sys-maint
password = blahblahblah

Quindi:

$ mysql -u debian-sys-maint -p
Enter password: // type 'blahblahblah', ie. password from debian.cnf

mysql> USE mysql
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> COMMIT;  // When you don't have auto-commit switched on

O:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

Oppure:

// For MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';

Quindi:

mysql> FLUSH PRIVILEGES;
mysql> COMMIT;  // When you don't have auto-commit switched on
mysql> EXIT

$ sudo service mysql restart
$ mysql -u root -p
Enter password: // Yay! 'new_password' now works!

Dopo aver installato MySQL-community-server 5.7 da fresco su Linux, dovrai trovare la password temporanea da /var/log/mysqld.log per accedere come root.

  1. grep 'temporary password' /var/log/mysqld.log
  2. Esegui mysql_secure_installation per cambiare la nuova password

ref:http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html


Linux
  1. I 5 migliori sostituti gratuiti per MySQL Server

  2. Qual è lo scopo dell'utente "mysql.sys@localhost".

  3. Qual è lo scopo di "utente di sistema" in MySQL Replication

  4. Come cambiare la password di root mysql

  5. A cosa serve l'opzione 'soname' per la creazione di librerie condivise?

Quali sono le directory di inclusione predefinite di GCC?

Qual è la password predefinita dello schermo?

Qual è il motivo per cui rmdir(1) e rm(1) coesistono?

A cosa serve il gruppo `ombra`?

Qual è l'ordine predefinito dell'ordinamento di Linux?

Qual è il nome utente e la password predefiniti per un Live CD di Ubuntu?