GNU/Linux >> Tutoriels Linux >  >> Linux

Quel est le mot de passe root par défaut pour MySQL 5.7

MySQL 5.7 a changé le modèle sécurisé :désormais, la connexion à la racine de MySQL nécessite un sudo

La solution la plus simple (et la plus sûre) sera de créer un nouvel utilisateur et d'accorder les privilèges requis.

1. Connectez-vous à mysql

sudo mysql --user=root mysql

2. Créer un utilisateur pour phpMyAdmin

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

Référence - https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7


Le serveur MySQL 5.7 était déjà installé par défaut sur mon nouveau Linux Mint 19.

Mais qu'est-ce que MySQL root le mot de passe? Il s'avère que :

L'installation par défaut utilise auth_socket pour l'authentification, à la place des mots de passe !

Il permet une connexion sans mot de passe, à condition que l'on soit connecté au système Linux avec le même nom d'utilisateur. Pour vous connecter en tant que racine MySQL user , on peut utiliser sudo :

sudo mysql --user=root

Mais comment changer ensuite le mot de passe root ? Pour illustrer ce qui se passe, j'ai créé un nouvel utilisateur "moi", avec tous les privilèges, avec :

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

Comparer "moi" avec "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... |
+------+-----------------------+----------------------------------------------------------------------------+

Parce qu'il utilise auth_socket, le mot de passe root ne peut pas être changé :le SET PASSWORD la commande échoue et mysql_secure_installation je n'arrive à rien...

==> Pour zapper ce mode d'authentification alternatif et retourner le MySQL root utilisateur à utiliser des mots de passe :

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

Une bonne explication.

Plus de détails dans le manuel MySQL.


Il y a tellement de réponses disant de réinstaller mysql ou d'utiliser une combinaison de

mysqld_safe --skip-grant-tables

et/ou

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

et/ou autre chose...

... Rien de tout cela ne fonctionnait pour moi

Voici ce qui a fonctionné pour moi, sur Ubuntu 18.04, à partir du haut

Avec un crédit particulier à cette réponse pour m'avoir sorti de la frustration à ce sujet...

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

Notez les lignes qui lisent :

user     = debian-sys-maint
password = blahblahblah

Ensuite :

$ 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

Soit :

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

Ou :

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

Ensuite :

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!

Après avoir installé MySQL-community-server 5.7 à partir de zéro sur Linux, vous devrez trouver le mot de passe temporaire dans /var/log/mysqld.log pour vous connecter en tant que root.

  1. grep 'temporary password' /var/log/mysqld.log
  2. Exécuter mysql_secure_installation pour changer le nouveau mot de passe

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


Linux
  1. Les 5 meilleurs remplacements gratuits pour MySQL Server

  2. Comment réinitialiser le mot de passe root MySQL ?

  3. L'action Installer pour le produit MySQL Server 5.7.19 a échoué.

  4. À quoi sert l'option 'soname' pour créer des bibliothèques partagées ?

  5. A quoi sert le groupe "shadow" ?

Quelle est la raison pour laquelle rmdir(1) et rm(1) coexistent ?

Quel est l'ID de partition/le type de système de fichiers pour UDF ?

Quel est l'ordre par défaut du tri Linux ?

Quel est le nom d'utilisateur et le mot de passe par défaut pour un Ubuntu Live CD ?

Quel est le shell par défaut de Busybox ?

Qu'est-ce que la fonction syslog pour les journaux auditd ?