2012年11月27日

Access denied for user 'root'@'localhost'

Mysql5.6.8_rc をインストールした時にハマったこと。

表題の通り、インストール直後にmysqlにログインが出来ない。。。

# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

通常、rootユーザが、すべての操作を実行できるスーパーユーザとして作成されるので、

まずは、mysql -u root とかでログインでしてから、パスワード設定したり、ユーザー作ったりしていくのだが、

いきなりログインが出来ん。。これは困った。何度かインストールし直しても変わりなし。

今までそんなことなかったのだけど。

さて、実際の解決方法だけど、

1.Mysqlの停止

# /etc/init.d/mysql stop

2.MySQLを–skip-grant-tablesオプション付きで起動
このオプションはMySQLの権限システムを使用しないで起動するためのもの。

# mysqld_safe --skip-grant-tables &


3.続けてその場でログイン

# mysql -u root

すると、mysqlコマンドプロンプトに入れた!

そこで、ユーザーの情報をチェックする。

mysql> use mysql;
Database changed
mysql> SELECT host,user,password from user;
+--------------+------+-------------------------------------------+
| host     | user | password                 |
+--------------+------+-------------------------------------------+
| localhost  | root | *E7A7931D07759BA32FF501497E44BB59E729111C |
| 127.0.0.1  | root | *E7A7931D07759BA32FF501497E44BB59E729111C |
| ::1     | root | *E7A7931D07759BA32FF501497E44BB59E729111C |
+--------------+------+-------------------------------------------+

なんか、ユーザーが全く居ないのかと思ったが、ちゃんとrootが居るな。

勝手にパスワード付いたのが。。。。

よく分からんから、こいつらを一旦削除して、作り直し!!

mysql> truncate table user;
mysql> flush privileges;
mysql> grant all privileges on *.* to root@localhost identified by 'パスワード' with grant option;
mysql> flush privileges;


ここまで終わったら、Mysqlを通常起動して、ログインしてみるとうまく行った!!あー良かった。。。

こんなこともあるんだね。なんでやろ?

てか、こんなことできるならDBサーバーにSSHなどでログインされたら、MYSQLはやられ放題だなぁ。

追記:
mysqldに接続する際の初期の root のパスワードは、 /root/.mysql_secret に書かれているっぽい。
・初期パスワードをランダムでセット
・しかもそれで接続後に、パスワードの変更をしないと使えない
という仕様になってるみたい。5.6から堅牢さがアップしんだねー。
posted by hana at 14:57| Comment(0) | TrackBack(0) | DB,SQL関連 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック