HomebrewでインストールしたMySQLのrootパスワードを忘れた時の対処法
MacOSX Homebrew で MySQL の root パスワードをリセットする方法
状況
解決方法
以下の手順で、root パスワードをリセットすることができます。
- MySQL を停止する
sudo brew services stop mysql
- MySQL サーバーをセーフモードで起動する
sudo mysqld_safe --skip-grant-tables
mysql -u root
- root パスワードをリセットする
UPDATE mysql.user SET authentication_string=PASSWORD('NEW_PASSWORD') WHERE User='root';
FLUSH PRIVILEGES;
sudo brew services stop mysql
sudo brew services start mysql
注意事項
- 上記の手順を実行する前に、重要なデータのバックアップを取っておくことをお勧めします。
- 新しい root パスワードは、安全なものを設定してください。
補足
Homebrew でインストールした MySQL は、デフォルトで /usr/local/var/mysql
ディレクトリにデータファイルを保存します。このディレクトリには、データベースファイル、ログファイル、その他の設定ファイルが含まれています。
root パスワードをリセットする際には、このディレクトリへのアクセス権を持っていることを確認する必要があります。
また、Homebrew でインストールした MySQL は、システム起動時に自動的に起動するように設定されています。MySQL サーバーを停止した後は、手動で起動する必要があります。
MySQL サーバーをセーフモードで起動する
sudo mysqld_safe --skip-grant-tables
MySQL にログインする
mysql -u root
このコマンドは、mysql
コマンドを使用して MySQL にログインします。-u root
オプションは、root ユーザーとしてログインすることを指定します。
root パスワードをリセットする
UPDATE mysql.user SET authentication_string=PASSWORD('NEW_PASSWORD') WHERE User='root';
FLUSH PRIVILEGES;
このコマンドは、UPDATE
ステートメントと FLUSH PRIVILEGES
ステートメントを使用して root パスワードをリセットします。
UPDATE mysql.user SET authentication_string=PASSWORD('NEW_PASSWORD') WHERE User='root';
ステートメントは、mysql.user
テーブルのauthentication_string
列をNEW_PASSWORD
に更新します。この列には、root ユーザーのパスワードが保存されています。FLUSH PRIVILEGES;
ステートメントは、mysql.user
テーブルの変更を適用します。
MySQL サーバーを停止する
sudo brew services stop mysql
このコマンドは、brew services
コマンドを使用して MySQL サーバーを停止します。
MySQL サーバーを通常モードで起動する
sudo brew services start mysql
MySQL root パスワードをリセットするその他の方法
mysqld_safe オプションを使用する
MySQL 5.7.6 以降では、mysqld_safe
オプションを使用して root パスワードをリセットすることができます。
sudo mysqld_safe --socket=/tmp/mysql.sock --user=root --password-stdin
上記のコマンドを実行すると、パスワードの入力を求められます。新しいパスワードを入力し、Enter キーを押します。
initial-file オプションを使用する
sudo mysqld --initialize-file=/tmp/mysql_init.txt
/tmp/mysql_init.txt
ファイルには、次の内容を記述する必要があります。
SET PASSWORD = 'NEW_PASSWORD';
ブート時にスクリプトを実行して、root パスワードをリセットすることができます。この方法を使用するには、次のスクリプトを作成する必要があります。
#!/bin/bash
mysql -u root -p << EOF
UPDATE mysql.user SET authentication_string=PASSWORD('NEW_PASSWORD') WHERE User='root';
FLUSH PRIVILEGES;
EOF
このスクリプトを /etc/mysql/root_reset.sh
として保存し、次のコマンドを実行して実行権限を付与します。
sudo chmod +x /etc/mysql/root_reset.sh
次に、次のコマンドを実行してスクリプトをブート時に実行するように設定します。
sudo echo "/etc/mysql/root_reset.sh" >> /etc/rc.local
リカバリツールを使用する
MySQL には、mysql_secure_installation
などのリカバリツールが用意されています。これらのツールを使用して、root パスワードを含む MySQL の設定をリセットすることができます。
注意事項
上記の方法を実行する前に、必ず重要なデータのバックアップを取っておくことをお勧めします。また、新しい root パスワードは、安全なものを設定してください。
MySQL の root パスワードをリセットするには、いくつかの方法があります。上記の方法の中から、自分に合った方法を選択してください。
mysql macos