1. 程式人生 > >Ubuntu/Debian(Raspbian)進入MySQL報錯:ERROR 1698 (28000): Access denied for user 'root'@'localhost'的解決方法

Ubuntu/Debian(Raspbian)進入MySQL報錯:ERROR 1698 (28000): Access denied for user 'root'@'localhost'的解決方法

樹莓派安裝MySQL未提示設定密碼,之後在sudo下無需密碼即可連線,其它輸入報錯ERROR 1698 (28000)

附:遠端連線MySQL出現1130錯誤解決方法

問題場景:

在樹莓派3B+,系統Raspbian(Debian9.4),安裝MySQL:

 sudo apt-get install mysql-server
 sudo apt-get install mysql-client

安裝過程中未提示設定密碼。

檢查程序:

sudo netstat -tap | grep mysql

顯示:

tcp        0      0 localhost:mysql         0.0.0.0:*               LISTEN      1369/mysqld

說明資料庫服務成功啟動。

嘗試登入mysql:

mysql -u root -p

報錯:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

重啟服務:

sudo service mysql restart

還是報錯:ERROR 1698 (28000)!!!

是不是很氣?

開啟配置檔案:

sudo vim /etc/mysql/debian.cnf

兩個root賬號密碼竟然為空,也沒有用隨機值填充。

目前遇到的問題:

        安裝mysql-server的過程沒有提示輸入root的password
        安裝成功後,輸入指令mysql -uroot,提示Access denied for user ‘root’@’localhost’
        輸入sudo mysql -uroot可以直接連線成功
        輸入sudo mysql -uroot -p後回車輸入任意password也可以直接連線成功
        輸入mysql -h 127.0.0.1 -P 3306 -uroot -p提示Access denied for user ‘root’@’localhost’

解決方法:

sudo mysql -u root

成功登入!

但問題徹底解決了嗎?……還沒有!

  • 需要給root設定password
  • 需要將使用者表中plugin欄位由auth_plugin設定成mysql_native_password

修改密碼:

noneDataBase> use mysql;
mysql> UPDATE user SET password=PASSWORD('123456') WHERE user='root';
mysql> UPDATE user SET plugin='mysql_native_password' WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

重啟服務:

sudo systemctl restart mysql

sudo systemctl status mysql

問題已經解決(無論是否加sudo,都必須使用正確的密碼,才能連線資料庫)

如需遠端連線MySQL:

sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

將bind-address=127.0.0.1改成bind-address=0.0.0.0
然後:
sudo reboot

via……

對了,如果你需要完整解除安裝MySQL:

sudo apt-ge autoremove --purge mysql-server
sudo apt-get remove mysqyl-server
sudo apt-get remove mysql-common #重要
sudo apt-get autoremove mysql-server

Thanks Kevin_miu

遠端連線MySQL出現1130錯誤解決方法:

mysql -u root -p

noneDataBase>use mysql;

mysql>select 'host' from user where user='root';

mysql>update user set host = '%' where user ='root';

mysql>flush privileges;

mysql>select 'host'   from user where user='root';

修改後即可嘗試遠端連線,如果不行建議:sudo systemctl restart mysql或者reboot。