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。