web-dev-qa-db-ja.com

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

Linuxを使用するのは初めてですが、Amazon ec2インスタンスにMySQLデータベースをセットアップしています。 MySQLの--skip-grant-tablesオプションを使用して、ユーザーログインパスをリセットする方法をいくつか見つけました。現在、ユーザーを追加しようとしていますが、そのオプションをオフにする方法がわかりません。

これは私がやろうとしていることです:

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

このオプションをオフにするにはどうすればよいですか?

14
user718229

MySQLを通常どおり停止して再起動するだけです。

3
Michael Hampton

Mysqlにログイン

 mysql -u root -p

次に実行します:

FLUSH PRIVILEGES;

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

29
wdkidd

以下の手順でこれを行うことができます。

[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の通常モードに切り替えてから、パスワードなしで接続します。

これはきっとあなたのために働くでしょう。

2
Mansur Ali

昨日、同様の問題が発生しました。サーバーは、Amazon Linux 2をOSとして使用し、公式のyumリポジトリ(el7リポジトリ)をインストール手段として使用していました。

特に公式のyumリポジトリのMySQLを使用している場合、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変数がsystemdプロセスによって値--skip-grant-tablesオプションで設定されていることがわかりました。 systemdによって設定された環境変数を確認するには、Sudo systemctl showを実行して、Environment=で始まる行を探します。

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

Sudo systemctl set-environment MYSQLD_OPTS=""

この操作の後、Sudo service mysql restartを使用してmysqldサービスを再起動すると、すべてが完全に機能していました。

0
Yuki Inoue