68 votes

mysql ne demande pas le mot de passe root lors de l'installation

J'ai utilisé apt install mysql-server pour installer MySQL sur Ubuntu 16.04 mais pendant l'installation, il n'a pas demandé le mot de passe root.

Après l'installation, j'ai obtenu ERROR 1045 lorsque j'ai essayé de me connecter en tant que root y mysql_secure_installation a donné lieu à la même erreur. I purge d et autoremove d puis réinstallé mais cela ne fonctionne pas.

Comment puis-je résoudre ce problème ? Puis-je définir le mot de passe root si je ne l'ai pas défini lors de l'installation ?

Voici le journal de mon installation :

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) ...

70voto

linuxmaniax Points 21

Vous pouvez récupérer ou définir le mot de passe root sans connaître le mot de passe actuel en démarrant mysql sans charger les grant-tables.

Veuillez noter que le $ dans les commandes. Il s'agit de spécifier l'invite du terminal que vous voyez lorsque vous tapez la commande. Elle montre qu'il s'agit d'une ligne de texte, mais d'une commande de terminal réellement tapée. L'option " mysql> Le préfixe " " est également une invite. C'est l'invite que vous obtenez lorsque vous exécutez mysql de manière interactive.

C'est le cli (ligne de commande) pour ce faire :
(Veillez à arrêter le serveur actuel avant d'effectuer les étapes. Un seul serveur peut fonctionner à la fois).

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

Vous pouvez maintenant vous connecter en tant que root sans mot de passe et exécuter toutes les commandes, comme dans ce cas, définir le mot de passe root.

$ sudo mysql --user=root mysql

Il s'agit du mot de passe root défini que vous effectuerez dans mysql si vous avez MySQL 5.6 ou moins :

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

Dans MySQL 5.7 ou supérieur

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

De là, quittez (en tuant le msqld en cours d'exécution) mysql et démarrez-le normalement.

Notes sur le démarrage et l'arrêt du service mysql :

Arrêtez mysql :

$ sudo service mysql stop

Démarrer mysql (normal) :

$ sudo service mysql start

Fermez la session temporaire de mysql en mode sécurisé :

$ sudo mysqladmin shutdown

47voto

d a i s y Points 5143

Il ne demandera pas le mot de passe lors de l'installation mysql dans Ubuntu 16.04 mais vous pouvez le définir après une installation réussie de la manière suivante :

Après avoir terminé l'installation de mysql, exécutez la commande :

sudo mysql_secure_installation

Elle montrera :

NOTE : L'EXECUTION DE TOUTES LES PARTIES DE CE script EST RECOMMANDEE POUR TOUTES LES UTILISATIONS DE MariaDB SERVEURS EN PRODUCTION ! VEUILLEZ LIRE ATTENTIVEMENT CHAQUE ÉTAPE !

Afin de se connecter à MariaDB pour le sécuriser, nous aurons besoin de l'adresse actuelle de l'utilisateur. mot de passe actuel de l'utilisateur root. Si vous venez d'installer MariaDB, et que vous n'avez pas encore défini le mot de passe root, le mot de passe sera vide, donc vous vous devez donc appuyer sur la touche Entrée ici.

Enter current password for root (enter for none): (ici appuyez sur Enter)

OK, mot de passe utilisé avec succès, on continue...

En définissant le mot de passe root, on s'assure que personne ne peut se connecter au serveur MariaDB. sans l'autorisation appropriée.

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

Le mot de passe a été mis à jour avec succès ! Rechargement des tables de privilèges ... ... Succès !


Pour Ubuntu 18.04 OU mysql-server version 5.7.22, CETTE MÉTHODE NE FONCTIONNE PAS.

Pour définir le mot de passe root dans Ubuntu 18.04, suivez d'abord les trois premières commandes ou les deux premières étapes de la procédure suivante La réponse de L.D. James puis courir,

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

Le mot de passe de l'utilisateur root est défini !

OU

Suivez ces étapes pour définir le mot de passe root en 18.04 :

Comme il n'y a pas de mot de passe défini pour l'utilisateur root, il suffit de se connecter avec mot de passe vierge

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

après cela, vous pouvez facilement exécuter la requête

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

24voto

carp Points 357

Apparemment, l'installation de mysql-server sur 16.04 (ou n'importe quelle installation 5.7 ?) permet l'accès root non pas par mot de passe, mais par l'intermédiaire de la fonction auth_socket plugin. Exécution de sudo mysql -u root (n.b. sans mot de passe) vous donnera la console mysql alors que l'exécution de la commande en tant que non-root vous demandera un mot de passe.

Il semblerait que le changement de mot de passe ne fasse pas une grande différence puisque le backend d'authentification ne vérifie même pas la présence d'un mot de passe. Il existe un article très complet sur la façon de changer le plugin et passer à l'authentification par mot de passe .

23voto

RaspDealer Points 411

Après l'installation juste :

  1. sudo mysql (oui, pas d'utilisateur pas de passe)

  2. Vous êtes maintenant dans la console mysql. Exécutez :

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

  3. FLUSH PRIVILEGES;

C'est ça. Vous pouvez maintenant entrer dans la console la prochaine fois comme d'habitude :

mysql -u root -pmy_new_pass

7voto

pwxcoo Points 171
  1. il existe un compte utilisateur par défaut.

    $ vim /etc/mysql/debian.cnf 

    vous obtiendrez ce compte comme ceci :

    user     = debian-sys-maint
    password = nUZTARYslBsASzpw
  2. vous vous connectez avec ce compte

    $ mysql -u debian-sys-maint -p
  3. modifier votre mot de passe 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. redémarrer mysql

    $ /etc/init.d/mysql restart;

alors vous pouvez mysql -u root -p avec votre réglage précédent.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X