毎回引っかかります。
何度も探すの面倒なので、メモ。
$ mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
こういう感じのエラーですよね。
3ステップでいきましょう。
まず、停止します。
$ /etc/init.d/mysql stop
やさしいモードで起動します。
詳しくは権限使わないで、起動しますー。モードです。
普通にコマンドをタイプすると、プロセスが常駐してしまうので
バッググラウンド「&」を利用します。
$ mysqld_safe --skip-grant-tables & 140xxx 00:00:00 mysqld_safe Logging to '/var/log/mysqld.log'. 140xxx 00:00:00 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 140xxx 00:00:00 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
そして、ログインするんだよ!
$ mysql -u root ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
orz
3ステップ・・・
原因調査
時間かかるなと、思ったけどすぐにわかった。
どうやら、セーフモードのソケットが作成されていないっぽい。
作成してほしいところを確認
$ cat /etc/my.cnf ~~~~いろいろ省略~~~~ [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
配置されるディレクトリの確認
$ ls -d /var/run/mysqld/ ls: cannot access /var/run/mysql: そのようなファイルやディレクトリはありません
確定っぽい。で、作成
$ mkdir /var/run/mysqld $ chmod 777 /var/run/mysqld
もっかい起動してみます。
$ mysqld_safe --skip-grant-tables & 140xxx xx:xx:xx mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
お、できたっぽい。
そして、ログインするんだよ!(やり直し)
$ mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.17 MySQL Community Server (GPL) mysql>
うし!
では、ユーザー情報が登録されているテーブルを一旦削除します。
mysql> use mysql; mysql> truncate table user; # キャッシュを削除する必要があるらしいので。 mysql> flush privileges; # ユーザーを再定義 mysql> grant all privileges on *.* to root@localhost identified by 'password' with grant option; # もっかい、キャッシュ削除 mysql> flush privileges; # ここまで終えたら、一旦ログアウト mysql> quit;
んで、mysqlをふつーに起動してログインしてみよう。
$ mysql -u root -p password
入れた!
ログインできたよ!
mysqlインストール直後はこうなるので、覚えておきましょう。