今日は開発環境のmysqlサーバへログインできなくなってしまった場合の対処法です。
rootログインも一般アカウントログインもできません。
# mysql -u rootもちろんパスワードの設定などもしていませんでした。
Access denied for user: 'root@localhost' (Using password: NO)
# mysql -u mysql_user
Access denied for user: 'mysql_user@localhost' (Using password: NO)
権限テーブルで何か異常が発生してるのだろう、、と確認したいのですが、mysqlデータベースにすら接続できません。
1)無理やりログインできるようにする
mysqlを立ち上げる際に
# mysqld_safe --skip-grant-tables &とやれば権限テーブルを無視してログインできます。
mysql> use mysqlあじゃぱー!!
mysql> select * from user;
Empty set (0.00sec)
userテーブルが空になっちょる!誰やー!?
この状態で
mysql> grant all on *.* to root@localhost;と打っても「--skip-grant-tablesオプション付けて起動してるからGRANTできひんでー」と怒られます。
2)他のサーバからuserテーブルデータを持ってきた
仕方がないので、他サーバで稼働中のuserテーブルデータをそのまま持ってきてdataディレクトリへ置きました。
# cp user.MYD user.MYI user.frm /usr/local/mysql/data/mysql/これで通常起動すれば普通に接続できるようになりました。
うむむ、--skip-grant-tablesオプションでログインできるようになったはいいけど、その後GRANT構文を放り込みたい場合はどうしたら良いのでしょう、、?
以上でぇぇぇえぇす。
0 件のコメント:
コメントを投稿