2018年1月12日

Access denied for user 'root'@'localhost' : mysql 5.7.20

安裝了 mysql-5.7.20 在 mint 18 (ubuntu 16.04) 之後, 想 (依以前的方式) 利用 phpmyadim 來增加資料庫和新 user, 結果: phpmyadmin 無法登入!!!

改用 terminal 指令模式, 輸入

mysql -u root -p
Enter password:

結果不管如何打入密碼, 結果都是:

Access denied for user 'root'@'localhost' (using password: YES)

查了 google 之後, 才發現 mysql 在某個版本以後, 就改變了在安裝過程中, 要求輸入的帳號密碼, 並不是 mysql 的 root 帳密, 其只是 phpmyadmin 的基本登入帳密, 沒有任何 mysql 的權限....

爬了很多文章, 發現很多人有問這個問題, 但解法不一定成功, 我自己試成功的如下:

1. mysql 的 root , 在此情況下是沒密碼的, 所以在 mysql -u root -p 之後, 只要按 enter 就可以進入 mysql 的指令模式 (注意指令結尾, 要打分號  ; )

mysql>


2. 接著就可以直接建 newdatabase, 用以下的指令:

mysql> CREATE DATABASE 'newdatabase';
Query OK, 1 row affected (0.00 sec)



3. 也可以創建 newuser, 用以下的指令:
mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'newpassword';

4. 也能授權給剛創建的 newuser, 用以下的指令:

mysql> GRANT ALL PRIVILEGES ON newdatabase.* TO 'newuser'@'localhost';

5. 如果你在上述第3-5項下指令後, 得到以下的結果
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

代表需要先設定 root 的密碼, 仍在 mysql> 的指令模式下, 更新 root 的密碼為, 例如 66666666 :
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('66666666') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

如果看到像以上紅字的回應, 就成功了。打 exit 離開 mysql, 再重新啟動 mysql:

mysqladmin shutdown
service mysql start





再用你剛剛設定的 root 和密碼登入
yinung@Mint182xfce64 ~ $ mysql -u root -p
Enter password:

接接就可以創建新 user 了
mysql> CREATE USER 'new_user'@'localhost' IDENTIFIED BY '9999999'
    -> ;
Query OK, 0 rows affected (0.01 sec)







exit 離開 mysql 指令模式

mysql> exit
Bye



之後, 記得重次新啟動 mysql, 指令:
service mysql stop
service mysql start

用這 root 帳密, 和剛創建的 new_user, 就可以在 phpmyadmin 順利登入了喔....

希望你也能成功

沒有留言: