MySQLリファレンスマニュアルには、rootのパスワードをリセットする方法の詳細な手順が記載されています。これは次のとおりです。
Windowsでの手順:
- MySQLが管理者として実行されているWindowsシステムにログオンします。
- MySQLサーバーが実行されている場合は、停止します。 Windowsサービスとして実行されているサーバーの場合は、サービスマネージャーに移動します。
スタートメニュー->コントロールパネル->管理ツール->サービス
次に、リストからMySQLサービスを見つけて、停止します。
サーバーがサービスとして実行されていない場合は、タスクマネージャーを使用してサーバーを強制的に停止する必要があります。
- テキストファイルを作成し、その中に次のコマンドをそれぞれ1行に配置します。
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
Save the file with any name. For this example the file will be C:\mysql-init.txt.SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
- Open a console window to get to the DOS command prompt: Start Menu -> Run -> cmd
- If MySQL is installed in C:\mysql. If MySQL is installed in another location, adjust the following commands accordingly.
At the DOS command prompt, execute this command:
C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt
--init-fileオプションで指定されたファイルの内容は、サーバーの起動時に実行され、rootパスワードが変更されます。サーバーが正常に起動したら、C:\mysql-init.txtを削除する必要があります。
MySQLインストールウィザードを使用してMySQLをインストールした場合は、-defaults-fileオプションを指定する必要がある場合があります。
C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt
適切な--defaults-file設定は、ServicesManagerを使用して見つけることができます。
スタートメニュー->コントロールパネル->管理ツール->サービス
リストからMySQLサービスを見つけて右クリックし、[プロパティ]オプションを選択します。 [実行可能ファイルへのパス]フィールドには、-defaults-file設定が含まれています。現在の作業ディレクトリに関係なく、必ず--init-file引数にファイルへの完全なシステムパスを指定してください。
- MySQLサーバーを停止してから、通常モードで再起動します。 MySQLサーバーがサービスとして実行されている場合は、Windowsサービスウィンドウからサーバーを起動します。サーバーを手動で起動する場合は、通常使用するコマンドを使用してください。
- 新しいパスワードを使用してMySQLサーバーに接続します。また、完了したらmysql-init.txtファイルを削除することを忘れないでください。
UnixおよびLinux環境の場合、rootパスワードをリセットする手順は次のとおりです。
- Unix rootユーザーとして、またはmysqldサーバーが実行されているのと同じユーザーとしてUnixシステムにログオンします。
- サーバーのプロセスIDを含む.pidファイルを見つけます。このファイルの正確な場所と名前は、ディストリビューション、ホスト名、および構成によって異なります。一般的な場所は、/ var / lib / mysql /、/ var / run / mysqld /、および/ usr / local / mysql /data/です。通常、ファイル名の拡張子は.pidで、mysqldまたはシステムのホスト名で始まります。
次のコマンドで.pidファイルのパス名を使用して、mysqldプロセスに通常のkill(kill -9ではない)を送信して、MySQLサーバーを停止します。
shell> kill `cat /mysql-data-directory/host_name.pid`
catコマンドで引用符を転送するのではなく、バッククォートを使用していることに注意してください。これらにより、catの出力がkillコマンドに置き換えられます。
- テキストファイルを作成し、その中に次のコマンドを1行に配置します。
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
任意の名前でファイルを保存します。この例では、ファイルは〜/mysql-initになります。
- 特別な--init-file=〜/ mysql-initオプションを使用してMySQLサーバーを再起動します:
shell> mysqld_safe --init-file=~/mysql-init &
init-fileの内容は、サーバーの起動時に実行され、rootパスワードが変更されます。サーバーが正常に起動したら、〜/mysql-initを削除する必要があります。
- サーバーを通常どおり再起動します。新しいパスワードを使用してMySQLサーバーに接続します。
または、どのプラットフォームでも、mysqlクライアントを使用して新しいパスワードを設定できますが、パスワードをリセットする方法は安全性が低くなります(詳細な手順はこちら)。
- mysqldを停止し、-skip-grant-tables --user =rootオプションを使用して再起動します(Windowsユーザーは--user =root部分を省略します)。
- 次のコマンドでmysqldサーバーに接続します:
shell> mysql -u root
- mysqlクライアントで次のステートメントを発行します。
mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') -> WHERE User='root'; mysql> FLUSH PRIVILEGES;
'newpwd'を、使用する実際のルートパスワードに置き換えます。
- 新しいパスワードを使用して接続できるはずです。