表題の通り、インストール直後に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から堅牢さがアップしんだねー。