MySQLをインストールした直後に、私も遭遇しましたが、rootユーザの権限設定がされていなく、下記のようなエラーが発生することがあるようです。
[root ~]# mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
ここでは、その場合の対処方法を整理しておきます。
1.MySQLの停止
MySQL(mysqld)が稼働している場合には、一旦停止します。
[root ~]# service mysqld stop mysqld を停止中: [ OK ]
2.オプション付きで起動
MySQLを–skip-grant-tablesオプション付きで起動します。
このオプションはMySQLの権限システムを使用しないで起動するためのものです。
[root ~]# mysqld_safe --skip-grant-tables &
3.mysqlコマンドプロンプトに入る
[root ~]# mysql -u root (メッセージ略) mysql>
今度は入れると思います。
4.rootへの権限設定
まずは、現状の権限設定を確認してみます。
mysql> use mysql; Database changed mysql> select * from user; Empty set (0.00 sec)
権限を持っているユーザがまったく設定されていないことが確認できます。
この確認ができたら、rootユーザにすべてのデータベースに関する全権限を設定し、パスワードを指定します。
なお、下記手順では、念のためuserテーブルを全件削除してから、設定を実行しています。
mysql> truncate table user; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> grant all privileges on *.* to root@localhost identified by 'パスワード' with grant option; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
パスワードを設定しない場合には次のような実行文になります。
mysql> grant all privileges on *.* to root@localhost identified by '' with grant option; Query OK, 0 rows affected (0.01 sec)
実行結果を確認します。
mysql> select host, user from user; +-----------+------+ | host | user | +-----------+------+ | localhost | root | +-----------+------+ 1 row in set (0.00 sec)
5.MySQLの再起動(通常起動)
これでrootユーザへの権限設定ができましたので、MySQLを–skip-grant-tablesオプションなしで再起動(通常起動)します。
mysql> quit; [root ~]# kill -KILL [mysqld_safe のPID] [root ~]# kill -KILL [mysqld のPID] [root ~]# service mysqld start mysqld を起動中: [ OK ]
6.エラー解消の確認
最後に、遭遇したエラーが解消されていることを確認します。
[root ~]# mysql -u root -pパスワード (メッセージ略) mysql>