web-dev-qa-db-fra.com

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

Impossible de se connecter à la base de données MySQL après une nouvelle installation avec un ID racine et un mot de passe vide/sans mot de passe, contrairement aux versions plus anciennes de MySQL

53
Ryan

Après avoir installé MySQL-community-server 5.7 à partir de fresh sur linux, vous devez 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écutez mysql_secure_installation pour changer le nouveau mot de passe

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

90
Ryan

Il y a tellement de réponses qui disent de réinstaller mysql ou d'utiliser un combo 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, à partir du haut sur Ubuntu 18.04

Avec un crédit spécial à cette réponse pour m'avoir sorti de la frustration qui règne à ce sujet ...

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

Notez les lignes qui se 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!
85
Stewart

MySQL 5.7 a changé le modèle sécurisé: maintenant, la connexion root à MySQL nécessite un serveur 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. Se connecter à mysql

Sudo mysql --user=root mysql

2. Créez 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

19
Sachin Vairagi

Si vous voulez installer mysql ou percona sans surveillance (comme dans mon cas ansible), vous pouvez utiliser le script suivant:

# first part opens mysql log
# second part greps lines with temporary password
# third part picks last line (most recent one)
# last part removes all the line except the password
# the result goes into password variable

password=$(cat /var/log/mysqld.log | grep "A temporary password is generated for" | tail -1 | sed -n 's/.*root@localhost: //p')

# setting new password, you can use $1 and run this script as a file and pass the argument through the script

newPassword="wh@teverYouLikE"

# resetting temporary password

mysql -uroot -p$password -Bse "ALTER USER 'root'@'localhost' IDENTIFIED BY '$newPassword';"
7
hpaknia

Je viens d'installer Linux Mint 19 (basé sur Ubuntu 18.04) sur ma machine. J'ai installé MySQL 5.7 à partir du référentiel ( Sudo apt installer mysql-server ) et, de manière surprenante, lors de l'installation, la configuration ne vous a pas demandé d'entrer root mot de passe. En conséquence, je n'ai pas pu me connecter à MySQL. J'ai googlé ici et là et essayé diverses réponses trouvées sur le net, y compris la réponse acceptée ci-dessus. J'ai désinstallé (en purgeant tous les dpkgs avec mysql dans son nom) et réinstallé à partir des référentiels Linux Mint par défaut. AUCUN ne fonctionne.

Après des heures de travaux non productifs, j'ai décidé de réinstaller MySQL à partir de la page officielle. J'ai ouvert la page de téléchargement de MySQL ( https://dev.mysql.com/downloads/repo/apt ) pour repo apt et j'ai cliqué sur Télécharger bouton en bas à droite.

Ensuite, lancez-le avec dpkg:

Sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb

Lors de la configuration de l'installation, choisissez la version de MySQL que vous souhaitez installer. L'option par défaut est 8.0 mais je l'ai changée en 5.7. Cliquez sur OK pour quitter. Après cela, vous avez un nouveau référentiel MySQL dans vos sources de logiciels.

Mettez à jour votre repo:

Sudo apt update

Enfin, installez MySQL:

Sudo apt install mysql-server

Et maintenant, on m'a demandé de fournir mot de passe root ! J'espère que cela aide pour les autres avec cette même expérience.

1
Firdaus Adiputra

Mysql génère un mot de passe temporaire par défaut lorsqu’il est installé. Pour utiliser mysql en premier lieu, vous devez obtenir ce mot de passe à partir du fichier journal présent dans /var/log/mysqld.log. Alors suivez le processus suivant -

grep 'mot de passe temporaire' /var/log/mysqld.log

mysql_secure_installation - Ceci est nécessaire pour changer le mot de passe de mysql et également pour apporter certaines modifications, telles que la suppression de bases de données temporaires, l'autorisation ou l'interdiction de l'accès distant à l'utilisateur root, la suppression d'utilisateurs anonymes, etc.

1
Vipul Sharma

Après de nombreuses tentatives, je peux réinitialiser le mot de passe par défaut à l’aide des commandes suivantes (Ubuntu et dérivés):

    Sudo -i
    mkdir -p /var/run/mysqld
    chown mysql:mysql /var/run/mysqld
    /etc/init.d/mysql stop
    mysqld_safe --skip-grant-tables &
    mysql -uroot
    use mysql;
    update user set authentication_string=password('YOURPASSWORD') where user='root';
    update user set plugin="mysql_native_password" where User='root';  
    flush privileges;
    quit;
    Sudo /etc/init.d/mysql stop
    Sudo /etc/init.d/mysql start

Parfois, même après avoir tapé dans le terminal

    mkdir -p /var/run/mysqld
    chown mysql:mysql /var/run/mysqld
    /etc/init.d/mysql stop
    mysqld_safe --skip-grant-tables &

J'ai eu l'erreur que le mysqld n'existe pas. Alors, quittez et tapez les mêmes commandes à nouveau.

Et la dernière commande

        Sudo /etc/init.d/mysql start

Parfois ne fonctionne pas. Seulement après le redémarrage de l'ordinateur.

1
Leonardo

Il semble que les choses ont été conçues pour éviter que les développeurs se voient comme utilisateur root, une meilleure solution serait:

Sudo mysql -u root

Créez ensuite un utilisateur normal, définissez un mot de passe, puis utilisez-le pour travailler.

create user 'user'@'localhost' identified by 'user1234';
grant all on your_database.* to 'user'@'localhost';
select Host, user from mysql.user;

Ensuite, essayez d'accéder à:

mysql -u user -p

Boom!

1
Pablo Pazos

Je connaissais le même problème et la seule chose que j'ai pu faire pour que cela fonctionne est de suivre cette voie:

drop user admin@localhost; flush privileges; create user admin@localhost identified by 'admins_password' </ code>

Cela m'a permis de recréer mon username et entrez un mot de passe pour le nom d'utilisateur

0
Donald L Wilson

Dans mon cas, le répertoire de données a été automatiquement initialisé avec l'option --initialize-insecure. Donc, /var/log/mysql/error.log ne contient pas de mot de passe temporaire, mais:

[Avertissement] root @ localhost est créé avec un mot de passe vide! Veuillez envisager de désactiver l'option --initialize-insecure.

Ce qui a fonctionné était:

Shell> mysql -u root --skip-password
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

Détails: Manuel de référence MySQL 5.7> 2.10.4 Sécuriser le compte MySQL initial

0
Ra.

Aucune de ces réponses n'a fonctionné pour moi sur Ubuntu Server 18.04.1 et MySQL 5.7.23. J'ai passé beaucoup de temps à essayer de définir le mot de passe et le plug-in auth manuellement, à trouver le mot de passe dans les journaux (ce n'est pas là), etc.

La solution est en réalité super facile:

Sudo mysql_secure_installation

C'est vraiment important de faire cela avec Sudo. Si vous essayez sans élévation, le mot de passe root vous sera demandé, ce que vous n'avez évidemment pas.

0
bendodge