流石にこの記事は古いのですが以下の場合に使えます。
- root のパスワードの喪失して何もできなくなったとき。
- データベースにアクセスできなくなったとき
- OS の root ユーザーにはアクセスできるとき。
- データは取り出したいとき
たんなるユーザパスワード変更なら次の記事を見てください。
MySQLの基本的コマンド(ユーザ・DB・権限・パスワード)の設定削除作成の早見表 -- sql 版 - それマグで!
データベースのデータがいらないときは、インストールし直したほうが早いです。
root パスワード忘れの場合。
MySQLのパスワードを紛失することが多いので、リカバリ方法をメモっておく.沢山のサーバーやWEBアプリを入れたり消したりしているとパスワードが分からなくなっていく、仮想化していたり、久しぶりに起動したサーバーにパスワードを紛失して、パスワードをリセットしたくてあたふたすることがないように、MySQLのパスワードの再設定方法をメモっておく
セーフモード(認証無し)で起動する
/usr/bin/mysqld_safe --user=root --skip-grant-tables &
MySQLにログイン
mysql -u root
管理用データベースを選択
mysql> use mysql;
パスワードを変更するべきユーザーを一覧表示する。
パスワードを変更したいユーザーをちゃんと捜す
mysql> select host, User, Password from user; +-----------+---------+------------------+ | host | User | Password | +-----------+---------+------------------+ | localhost | root | xxxxxxxxxxxxxxxx | | web-srv2 | root | xxxxxxxxxxxxxxxx | | 127.0.0.1 | root | xxxxxxxxxxxxxxxx | | localhost | | xxxxxxxxxxxxxxxx | | localhost | wpadmin | xxxxxxxxxxxxxxxx | +-----------+---------+------------------+
パスワードを変更する。
mysql> update user set password=password('this_is_my_new_password') where user='root'; #今回はRootパスワードを対象にした
this_is_my_new_password の部分を再設定したいパスワードに読み替えてください。
権限を一新する
mysql> flush privileges; #もしかしたら不要? mysql> exit;
Mysqlを再起動する。
# /etc/init.d/mysqld stop # /etc/init.d/mysqld start
更新した権限でログインできるかチェックする。
$ mysql -p -u USERNAME
2010-08-25 追記
ブクマコメントで指摘いただきました。
セーフモード(認証無し)で起動するは、--user=rootは不要とのこと。--skip-networkingはつけた方が良いとのこと。まぁ確かにそうだね。
/usr/bin/mysqld_safe --skip-grant-tables & /usr/bin/mysqld_safe --skip-grant-tables --skip-networking & # またはネットワークなし
--skip-networking はネットワーク越しのアクセスを受け付けないってことなんですね。
ありがとうございます
2020-09-18
mysql パスワードで検索されて出くるので、ちょっと用途が異なる検索で出てきちゃって困るので、表現を変えた。