今回はMacでMySQLのパスワードが分からなくなってしまった場合の再設定方法について解説します。
Railsでサーバを立ち上げても、以下のエラーが出てしまい、立ち上がらないということが起きた。
ActiveRecord::DatabaseConnectionError: There is an issue connecting to your database with your username/password, username: root. (ActiveRecord::DatabaseConnectionError)
Please check your database configuration to ensure the username/password are valid.
これは最近、プログラミングを教えている方からのご質問なので、この前に何をどうしたかという手順は分かりません。
目次
前提条件
- Rails7
- MySQL
- bundlerで環境構築
MySQLのパスワード再設定手順
MySQLのユーザーのパスワードを忘れてしまった場合、パスワードをリセットする必要があります。
1. MySQLサーバーを停止する
まず、MySQLサーバーを停止します。ターミナルで次のコマンドを実行してください。
sudo mysql.server stop
2. セーフモードでMySQLを起動する
MySQLをセーフモード(パスワードなしでのログインが可能)で起動し、rootパスワードをリセットします。ターミナルで以下のコマンドを実行してください。
mysqld_safe --skip-grant-tables
このコマンドを実行後、新しいターミナルウィンドウを開いて次のステップに進んでください。元のターミナルウィンドウは開いたままにしてください。
3. MySQLにログインする
新しいターミナルウィンドウで、パスワードなしでMySQLにrootユーザーとしてログインします。
mysql -u root
root
部分は適時ご自身の環境に合わせて変更してください。(以下の手順も同様)
4. パスワードをリセットする
MySQLプロンプトが開いたら、新しいパスワードを設定するSQLコマンドを実行します。次のコマンドを使用してください(root
やnew_password
は新しいパスワードに置き換えてください)。
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
5. MySQLを再起動する
すべての変更を行った後、セーフモードを終了し、MySQLサーバーを通常モードで再起動します。先に開いたターミナルでセーフモードを終了するために、Ctrl + C を押してmysqld_safeを停止し、次に以下のコマンドを実行してMySQLを再起動します。
sudo mysql.server restart
パスワードなしにする場合
MySQLでユーザーのパスワードを完全に削除し、パスワードなしでログインできるようにすることは可能ですが、セキュリティ上の理由から非推奨です。ただし、開発環境など特定の状況でこれが必要な場合、次の手順でパスワードを削除できます。
まずは、MySQLをセーフモードで起動してユーザーとしてログインするところから始めます。
その後、次のSQLコマンドを実行してユーザーのパスワードを削除します。
まずはログインします
mysql -u root -p
この後パスワードを入力してログインしましょう。
パスワードを削除する
削除のコマンドは以下になります。
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '';
FLUSH PRIVILEGES;
MySQLを再起動する
sudo mysql.server restart
これで完了です。