Désactiver --skip-grant-tables dans MySQL

13

Je suis assez nouveau dans l'utilisation de Linux, mais je configure mes bases de données MySQL sur une instance Amazon ec2. J'ai suivi certaines instructions que j'ai trouvées sur la réinitialisation de la connexion utilisateur en utilisant l' --skip-grant-tablesoption de MySQL. Maintenant, j'essaie d'ajouter un utilisateur et je ne sais pas comment désactiver cette option.

Voici ce que j'essaie de faire:

mysql> GRANT CREATE,SELECT,INSERT,UPDATE,DELETE ON ...my db username and pass

mais je reçois cette erreur:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

Comment désactiver cette option?

user718229
la source

Réponses:

3

Arrêtez et redémarrez MySQL normalement.

Michael Hampton
la source
2

Vous pouvez le faire en utilisant les étapes ci-dessous.

[root@backups1 mysql5.7]# bin/mysqld_safe --skip-grant-tables --user=mysql

connectez-vous à votre mysql sans mot de passe.

mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '';
mysql> flush privileges;

passer en mode normal de mysql puis se connecter sans mot de passe.

Cela fonctionnera sûrement pour vous.

Mansur Ali
la source
0

Hier, j'ai rencontré un problème similaire. Le serveur utilisait Amazon Linux 2 comme système d'exploitation et le référentiel officiel yum (les el7) comme moyen d'installation.

Surtout lorsque vous utilisez MySQL du dépôt officiel de yum, MySQL serait installé en tant que service systemd. Dans ce cas, vous pouvez vérifier le processus de MySQL est lancé en exécutant la commande suivante: sudo service mysql status -l. Il en résulte une description de l'état actuel du service mysql actuel. Parmi ces descriptions, j'ai pu trouver la ligne suivante:

  Process: 26474 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS

Dans mon environnement, il s'est avéré que la MYSQLD_OPTSvariable était définie avec l' --skip-grant-tablesoption value par le processus systemd. Pour confirmer les variables d'environnement définies par systemd, vous pouvez exécuter sudo systemctl showet rechercher la ligne commençant par Environment=.

Pour changer cette variable d'environnement, j'ai exécuté la commande suivante.

sudo systemctl set-environment MYSQLD_OPTS=""

Après cette opération, j'ai redémarré le service mysqld par sudo service mysql restart, et tout fonctionnait parfaitement.

Yuki Inoue
la source