MySQLで--skip-grant-tablesをオフにする

MySQLで--skip-grant-tablesをオフにする

私はLinuxを初めて使用していますが、Amazon ec2インスタンスにMySQLデータベースを設定しています。--skip-grant-tablesユーザーのログインパスワードをリセットするためにMySQLオプションを使用する方法については、いくつかの指示に従いました。これでユーザーを追加しようとしていますが、オプションをオフにする方法がわかりません。

これが私がしたいことです:

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

ただし、次のエラーが発生します。

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

このオプションをどのようにオフにしますか?

答え1

ログインmysql

 mysql -u root -p

次に、次を実行します。

FLUSH PRIVILEGES;

http://dev.mysql.com/doc/refman/5.0/en/server-options.html http://dev.mysql.com/doc/refman/5.0/en/mysqladmin.html

答え2

これを行うには、次の手順を使用できます。

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

mysqlに接続するためにパスワードは必要ありません。

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

mysqlの通常モードに切り替え、パスワードなしで接続します。

これは確かにあなたに効果があるでしょう。

答え3

MySQLを正常に停止して再起動するだけです。

答え4

昨日同様の問題がありました。サーバーはオペレーティングシステムとしてAmazon Linux 2を使用し、インストール方法として公式のyumリポジトリ(el7用)を使用します。

特に、MySQLの公式yumリポジトリを使用している場合、MySQLはsystemdサービスとしてインストールされます。この場合、次のコマンドを実行してMySQLプロセスがどのように起動されるかを確認できますsudo service mysql status -l。これにより、現在のmysqlサービスの現在の状態の説明が表示されます。この説明では、次の行を見つけることができます。

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

MYSQLD_OPTS私の環境では、値オプションを使用してシステムプロセスによって変数が設定されていることがわかりました。--skip-grant-tablessystemdで設定した環境変数を確認するには、を実行してsudo systemctl show見つけますEnvironment=

この環境変数を変更するために、次のコマンドを実行しました。

sudo systemctl set-environment MYSQLD_OPTS=""

これを実行した後、mysqldサービスを再起動しましたが、sudo service mysql restartすべてがうまくいきました。

関連情報