web-dev-qa-db-fra.com

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

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

Après l'installation, j'ai reçu ERROR 1045 lorsque j'ai essayé de me connecter en tant que root et mysql_secure_installation ont lancé la même erreur. purged et autoremoved puis réinstallé, mais cela ne fonctionne pas.

Comment pourrais-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?

Ceci est mon journal d'installation:

Les packages supplémentaires suivants seront installés: 
 Libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7 
 Mysql-server-core-5.7 
 : 
 mailx tinyca 
 Les NOUVEAUX packages suivants seront installés: 
 libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7 
 mysql-server-core-5.7 
 0 mis à niveau, 6 nouvellement installés, 0 à supprimer et 0 non mis à niveau. 
 Besoin d'obtenir 0 B/17,9 Mo d'archives. 
 Après cette opération, 160 Mo d’espace disque supplémentaire seront utilisés. 
 Voulez-vous continuer? [O/n] y 
 Préconfiguration des packages ... 
 Sélection du package précédemment non sélectionné libaio1: AMD64. 
 (Lecture de la base de données ... 227144 fichiers et répertoires installés.) 
 Préparation du déballage .../libaio1_0.3.110-2_AMD64.deb ... 
 Déballage de libaio1: AMD64 (0.3.110-2) ... 
 Sélection du paquet non sélectionné précédemment mysql- client-core-5.7. 
 Préparation du déballage .../mysql-client-core-5.7_5.7.12-0ubuntu1_AMD64.deb ... 
 Décomprimer mysql-client-core-5.7 (5.7 .12-0ubuntu1) ... 
 Sélection du paquetage précédemment non sélectionné mysql-client-5.7. 
 Préparation de la décompression .../mysql-client-5.7_5.7.12-0ubuntu1_AMD64.deb ... 
 Décompresser mysql-client-5.7 (5.7.12-0ubuntu1) ... 
 Sélectionner le paquet précédemment non sélectionné mysql-server-core-5.7. 
 Préparation de la décompression .../mysql-server-core-5.7_5.7.12-0ubuntu1_AMD64.deb ... 
 Déballer mysql-server-core-5.7 (5.7.12-0ubuntu1) ... 
 Sélectionner le paquet mysql précédemment non sélectionné -server-5.7. 
 Prepar pour décompresser .../mysql-server-5.7_5.7.12-0ubuntu1_AMD64.deb ... 
 Déballer mysql-server-5.7 (5.7.12-0ubuntu1) ... 
 Sélection précédente package non sélectionné mysql-server. 
 Préparer le processus de décompression .../mysql-server_5.7.12-0ubuntu1_all.deb ... 
 Déconditionnement de mysql-server (5.7.12-0ubuntu1) ... 
 Traitement des déclencheurs pour libc-bin (2.23-0ubuntu3) ... 
 Traitement des déclencheurs pour man-db (2.7.5-1) ... 
 Traitement des déclencheurs pour systemd (229 -4ubuntu4) ... 
 Traitement des déclencheurs pour ureadahead (0.100.0-19) ... 
 Configuration de libaio1: AMD64 (0.3.110-2) ... 
 Installer mysql-client-core-5.7 (5.7.12-0ubuntu1) ... 
 Installer mysql-client-5.7 (5.7.12-0ubuntu1) ... 
 Installer mysql- server-core-5.7 (5.7.12-0ubuntu1) ... 
 Installer mysql-server-5.7 (5.7.12-0ubuntu1) ... 
 update-alternatives: utiliser/etc/mysql/mysql.cnf pour fournir /etc/mysql/my.cnf (my.cnf) en mode automatique 
 Vérifier si une mise à jour est nécessaire. 
 Cette installation de MySQL est déjà mis à niveau vers la version 5.7.12, utilisez --force si vous devez toujours exécuter mysql_upgrade 
 Configuration de mysql-server (5.7.12-0ubuntu1) ... 
 Traitement des déclencheurs de libc-bin ( 2.23-0ubuntu3) ... 
52
spqa

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

S'il vous plaît noter le $ dans les commandes. Il s’agit de spécifier l’invite de terminal que vous voyez lors de la saisie de la commande. Cela montre que c'est une ligne de texte, mais une commande de terminal dactylographiée. Le "mysql>"Le préfixe est aussi une invite. C’est l’invite que vous obtenez lorsque vous exécutez mysql de manière interactive.

Ceci est le cli (ligne de commande) pour le faire:
(Assurez-vous de 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&

Maintenant, vous pouvez vous connecter en tant que root sans mot de passe et exécuter toutes les commandes. Dans ce cas, définissez le mot de passe root en tant que root.

$ Sudo mysql --user=root mysql

C'est le mot de passe root que vous utiliserez dans mysql si vous avez MySQL 5.6 ou une version antérieure:

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;

À partir de là, quittez mysql (tuez le msqld en cours d’exécution) et démarrez-le normalement.

Remarques 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

Tuer la session temporaire en mode sans échec mysql:

$ Sudo mysqladmin shutdown
57
L. D. James

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

Une fois l'installation de mysql terminée, exécutez la commande suivante:

Sudo mysql_secure_installation

Il montrera:

REMARQUE: EXÉCUTER TOUTES LES PARTIES DE CE SCRIPT IS RECOMMANDÉ POUR TOUS LES SERVEURS MariaDB UTILISÉS EN PRODUCTION! VEUILLEZ LIRE ATTENTIVEMENT CHAQUE ÉTAPE!

Pour vous connecter à MariaDB afin de le sécuriser, nous avons besoin du 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, celui-ci sera vide. Vous devez donc appuyer sur Entrée ici.

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

OK, mot de passe utilisé avec succès, passe à autre chose ...

La définition du mot de passe root garantit que personne ne peut se connecter à l'utilisateur root MariaDB sans l'autorisation appropriée.

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

Mot de passe mis à jour avec succès! Rechargement des tables de privilèges ... ... Succès!


Pour Ubuntu 18.04 OR mysql-server version 5.7.22, CETTE MÉTHODE NE FONCTIONNERA 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 réponse de L.D. James puis exécutez-vous,

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

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

OR

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

Comme il n'y a pas de mot de passe défini pour l'utilisateur root, connectez-vous simplement avec mot de passe vide

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

après alors peut facilement exécuter la requête

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
29
d a i s y

Apparemment, l'installation de mysql-server sur 16.04 (ou toute autre installation de 5.7?) Permet un accès root non par mot de passe, mais par l'intermédiaire du plugin auth_socket . L'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 invite à entrer un mot de passe.

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

15
carp

Après l'installation, il suffit de:

1.

Sudo mysql

(oui, pas d'utilisateur, pas de passe)

2.Vous êtes maintenant dans la console mysql:

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

3.

FLUSH PRIVILEGES;

  1. C'est tout. Vous pouvez maintenant entrer dans la console la prochaine fois, comme d'habitude:

    mysql -u root -p my_new_pass

4
DimiDak
  1. il existe un compte d'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. éditez 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.

2
pwxcoo

Ajoutant à la réponse principale, Si vous êtes bloqué à

"mysqld_safe Démarrage du démon mysqld avec les bases de données de/var/lib/mysql"

Une chose à retenir est que vous devez utiliser une autre fenêtre de terminal pour entrer la commande suivante.

$ Sudo mysql --user=root mysql

Si vous essayez de le faire dans la même fenêtre, le processus mysqld safemode sera arrêté.

0
Mohd Abdul Mujib