MySQLサーバーで発生する「MySQLサーバーが–skip-grant-tablesオプションで実行されています」というエラーを解決する方法
MySQLサーバーが–skip-grant-tablesオプションで起動されている場合、ユーザー認証がスキップされ、データベースに誰でもアクセスできる可能性があります。その場合は、以下の手順で問題に対処してください。
- MySQLサーバーの停止:プラットフォームやインストール方法に応じて適切なコマンドでMySQLサーバーを停止します。例:Ubuntuでは次のコマンドが使用できます。
sudo service mysql stop
- 安全モードでMySQLサーバを起動する:MySQLサーバを起動し、–skip-grant-tablesオプションを使用しますが、–skip-networkingオプションを追加して、ローカル接続のみがアクセスできるようにします。たとえば、Ubuntuでは次のコマンドを使用できます。
sudo mysqld_safe --skip-grant-tables --skip-networking &
- MySQL サーバーへの接続: 新しいターミナルウィンドウを開き、次のコマンドを使用して MySQL サーバーへ接続します。
mysql -u root
- ユーザー権限の更新:MySQL サーバーに接続したら以下のコマンドを実行してユーザー権限を更新してください。
UPDATE mysql.user SET authentication_string=PASSWORD('your_password') WHERE User='root';
‘your_password’をあなたが設定したい新しいパスワードに置き換えてください。
- ユーザー権限の更新:以下のコマンドを実行してユーザー権限を更新します:
FLUSH PRIVILEGES;
- MySQLサーバを終了するには、以下のコマンドを実行します。
quit
- MySQLサーバーを再起動する:適切なコマンドを使用してMySQLサーバーを再起動します。Ubuntuの場合、次のコマンドを使用します。
sudo service mysql start
なお、サーバーは通常モードで動作し、新しいパスワードが有効になります。–skip-grant-tablesオプションは、問題が解決したらすぐに削除または無効にして、データの安全を守るようにしてください。