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


11

J'essaye 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 de l'utilisateur root: Erreur: Accès refusé à l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: NO)

En recherchant l'erreur, dans 90% des cas, la solution consiste à appeler la 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_safeinvite une erreur "commande introuvable". J'ai aussi testé avec sudo mysqld --skip-grant-tables &, mais ça 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.


Besoin de ces fichiers binaires pour être dans le PATH. Ou vous avez besoin de chemins complets. (Il s'agit plus d'une question Linux que d'une question MySQL.)
Rick James

Réponses:


18

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';

Tu es le sauveur! Travaillez comme charme!.
Zugor

9

Dans ma folle recherche de solution, j'ai jeté un œil à /var/log/mysqld.logcette 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.


7

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 le processus de réinitialisation de 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


3

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écutez 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, sur 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. Ceci est uniquement destiné à des tests et à rendre l'installation 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.

    Désactiver 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é!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.