Deaktivieren Sie --skip-grant-tables in MySQL

13

Ich bin ziemlich neu in der Verwendung von Linux, richte aber meine MySQL-Datenbanken auf einer Amazon ec2-Instanz ein. Ich habe einige Anweisungen befolgt, die ich zum Zurücksetzen des Benutzeranmeldepasses mithilfe der --skip-grant-tablesOption von MySQL gefunden habe. Jetzt versuche ich, einen Benutzer hinzuzufügen, und kann nicht herausfinden, wie diese Option deaktiviert werden kann.

Das versuche ich zu tun:

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

aber ich bekomme diesen fehler:

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

Wie deaktiviere ich diese Option?

user718229
quelle

Antworten:

3

Stoppen Sie einfach MySQL und starten Sie es normal neu.

Michael Hampton
quelle
2

Sie können dies mit den folgenden Schritten durchführen.

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

Verbinden Sie sich mit Ihrem MySQL ohne Passwort.

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

Wechseln Sie in den normalen Modus von MySQL und stellen Sie dann eine Verbindung ohne Passwort her.

Dies wird sicherlich für Sie arbeiten.

Mansur Ali
quelle
0

Gestern bin ich auf ein ähnliches Problem gestoßen. Der Server verwendete Amazon Linux 2 als Betriebssystem und das offizielle yum-Repository (die el7-Repositorys) als Installationsmittel.

Insbesondere wenn Sie das MySQL des offiziellen yum repo verwenden, wird MySQL als systemd-Dienst installiert. In einem solchen Fall können Sie überprüfen , wie MySQL Prozess durch Ausführen folgenden Befehl gestartet wird: sudo service mysql status -l. Daraus ergibt sich eine Beschreibung des aktuellen Status des aktuellen MySQL-Dienstes. Von diesen Beschreibungen konnte ich folgende Zeile finden:

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

In meiner Umgebung stellte sich heraus, dass die MYSQLD_OPTSVariable --skip-grant-tablesvom systemd-Prozess mit der Option value festgelegt wurde . Um die von systemd gesetzten Umgebungsvariablen zu bestätigen, können Sie ausführen sudo systemctl showund nach Zeilen suchen, die mit beginnen Environment=.

Um diese Umgebungsvariable zu ändern, habe ich den folgenden Befehl ausgeführt.

sudo systemctl set-environment MYSQLD_OPTS=""

Nach dieser Operation habe ich den mysqld-Dienst von neu gestartet sudo service mysql restartund alles hat einwandfrei funktioniert.

Yuki Inoue
quelle