web-dev-qa-db-fra.com

Définition du mot de passe root dans une nouvelle installation de mysql 5.7

J'essaie d'installer mysql dans une portion ayant CentOS Linux release 7.2.1511. Jetez un œil à l'installation du processus:

# Sudo yum install mysql-server

Production:

Dependencies Resolved

===========================================================================================================================================================================================================
 Package                                                 Arch                                    Version                                         Repository                                           Size
===========================================================================================================================================================================================================
Removing:
 mysql-community-client                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  109 M
 mysql-community-server                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  652 M

Transaction Summary
===========================================================================================================================================================================================================

J'ai couru le damon mysql:

# Sudo service mysqld start

Vérification du service:

# ps -ef|grep mysql
mysql     1371     1  0 22:17 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Voici le problème qui me rend fou. Je veux définir le mot de passe root pour la toute première fois, alors j'ai fait:

# Sudo mysql_secure_installation
// when password is required, I just type "enter key"

Mais le résultat: sécuriser le déploiement du serveur MySQL.

Entrez le mot de passe pour l'utilisateur root: Erreur: Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: NO)

En recherchant l'erreur dans 90% des cas, la solution consiste à appeler mysqld_safe --skip-grant-tables & commande:

service mysqld stop
mysqld_safe --skip-grant-tables &
mysql --user=root mysql
update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
exit;

Mais mysqld_safe affiche une erreur "commande introuvable". J'ai aussi testé avec Sudo mysqld --skip-grant-tables &, mais cela ne fait rien. J'apprécierai si vous me guidez dans la bonne direction afin de définir le mot de passe root. Merci d'avance.

11
manix

Dans ma folle recherche de solution, j'ai jeté un œil à /var/log/mysqld.log et a trouvé cette ligne:

[Remarque] Un mot de passe temporaire est généré pour root @ localhost: abc123

On dirait que mysql 5.7+ génère un mot de passe aléatoire dans l'installation et est invité dans ce fichier.

9
manix

Si vous exécutez simplement la commande mysql sous l'utilisateur root, vous aurez accès sans mot de passe, car l'authentification de socket est activée pour root @ localhost.

Ce guide est trompeur.

La seule façon de définir le mot de passe est de passer à l'authentification native comme:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
18
Vadim Smilansky

Utilisez les étapes ci-dessous pour réinitialiser le mot de passe:

$ Sudo systemctl start mysqld

Réinitialisez le mot de passe racine du serveur MySQL.

$Sudo grep 'temporary password' /var/log/mysqld.log

Sortez quelque chose comme:

10.744785Z 1 [Note] A temporary password is generated for root@localhost: o!5y,oJGALQa

Utilisez le mot de passe ci-dessus pendant la procédure de réinitialisation mysql_secure_installation .

$ Sudo mysql_secure_installation
Securing the MySQL server deployment.

Enter password for user root: 

Vous avez réussi à réinitialiser le mot de passe root du serveur MySQL. Utilisez la commande ci-dessous pour vérifier la connexion du serveur MySQL ou non.

$ mysql -u root -p

Voir mon article: Installer la dernière version de MySQL 5.7 sur RHEL/Centos 7

7
Arvind

Tout ce qui précède n'a pas fonctionné pour moi et notez que j'ai passé une heure ou plus à essayer toutes les autres suggestions du site Web MYSql pour tout sur SO, je l'ai finalement fait fonctionner avec:

Remarque: alors qu'il montrait Entrez le mot de passe pour l'utilisateur root, je n'avais pas le mot de passe d'origine, je viens de saisir le même mot de passe pour être utilisé comme nouveau mot de passe.

Remarque: il n'y avait pas /var/log/mysqld.log uniquement /var/log/mysql/error.log

  1. tuer le pid mysqld actuel
  2. exécuter mysqld avec Sudo/usr/sbin/mysqld &
  3. exécutez/usr/bin/mysql_secure_installation

    Sortie de mysql_secure_installation

    root @ myServer: ~ #/usr/bin/mysql_secure_installation

    Sécurisation du déploiement du serveur MySQL.

    Entrez le mot de passe de l'utilisateur root:

    VALIDATE PASSWORD PLUGIN peut être utilisé pour tester les mots de passe et améliorer la sécurité. Il vérifie la force du mot de passe et permet aux utilisateurs de définir uniquement les mots de passe suffisamment sécurisés. Souhaitez-vous configurer le plug-in VALIDATE PASSWORD?

    Appuyez sur y | Y pour Oui, n'importe quelle autre touche pour Non: non Utilisation du mot de passe existant pour root. Changer le mot de passe de root? ((Appuyez sur y | Y pour Oui, n'importe quelle autre touche pour Non): y

    Nouveau mot de passe:

    Entrez à nouveau le nouveau mot de passe: Par défaut, une installation MySQL a un utilisateur anonyme, permettant à quiconque de se connecter à MySQL sans avoir à créer un compte utilisateur pour lui. Ceci est uniquement destiné à des tests et à rendre l'installation un peu plus fluide. Vous devez les supprimer avant de passer dans un environnement de production.

    Supprimer les utilisateurs anonymes? (Appuyez sur y | Y pour Oui, sur n'importe quelle autre touche pour Non): y Succès.

    Normalement, root ne doit être autorisé à se connecter qu'à partir de 'localhost'. Cela garantit que quelqu'un ne peut pas deviner le mot de passe root du réseau.

    Ne pas autoriser la connexion root à distance? (Appuyez sur y | Y pour Oui, sur n'importe quelle autre touche pour Non): y Succès.

    Par défaut, MySQL est livré avec une base de données nommée 'test' à laquelle tout le monde peut accéder. Ceci est également destiné uniquement aux tests et doit être supprimé avant de passer dans un environnement de production.

    Supprimer la base de données de test et y accéder? (Appuyez sur y | Y pour Oui, sur n'importe quelle autre touche pour Non): y

    • Suppression de la base de données de test ... réussie.

    • Suppression des privilèges sur la base de données de test ... Réussi.

    Le rechargement des tables de privilèges garantira que toutes les modifications apportées jusqu'à présent prendront effet immédiatement.

    Recharger les tables de privilèges maintenant? (Appuyez sur y | Y pour Oui, sur n'importe quelle autre touche pour Non): y Succès.

    Terminé!

3
JGlass