解決步驟:
step1
mysql -u root -p # 報錯
# 報錯信息……
step2
sudo cat /etc/mysql/debian.conf # 查看此文件內debin-sys-maint用戶的信息,這是系統自動生成的
mysql -u debin-sys-maint -p # 用debin-sys-maint 登錄mysql,密碼在debin.conf里面
step3 修改root用戶的密碼
mysql> show databases; # 顯示數據庫列表
mysql > use mysql; # 進入mysql這個數據庫
mysql> show tables; # 顯示表;
mysql> update user set authentication_string=PASSWORD("這里填要修改的密碼") where user='root' and Host='localhost'
step4
$ mysql -u root -p
# 權限拒絕,不能訪問mysql
$ sudo service mysql restart # 這樣也不行
再次執行step2、step3
mysql> use mysql;
mysql> select * from user; # 一堆信息,嘗試找出我們可能需要的列
mysql> select User, plugin, authentication_string, account_locked, password_expired, password_last_changed from user;
# 可以看到用戶root的plugin值為auth_socket,其他用戶的plugin值都為mysql_native_password
# 此時,找到root用戶不能登錄mysql的原因:
# root的plugin被修改成了auth_socket,用密碼登陸的plugin應該是mysql_native_password,直接用root權限登錄就不用密碼,修改root密碼和登錄驗證方式。
# 所以,之前我僅僅是更改了root用戶的密碼,但是root用戶的登錄驗證方式還是auth_socket的,
# 所以,要更改root賬戶認證模式
mysql> update user set authentication_string=PASSWORD('密碼'), plugin='mysql_native_password' where user='root';
mysql> flush privileges;
mysql> exit;
# 重啟mysql-server
$ sudo service mysql restart
附錄
# flush privileges 什么意思
# mysql 新設置用戶或更改密碼后需用flush privileges刷新MySQL的系統權限相關表,否則會出現拒絕訪問,還有一種方法,就是重新啟動mysql服務器,來使新設置生效。
# 檢查mysql是否運行
sudo netstat -tap | grep mysql
# 刪除MySQL的方法
sudo apt-get autoremove --purge mysql-server-5.7
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common
# 上面的可能會有些是多余的,之后需要清理殘余數據
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
# 配置root遠程登陸
mysql> grant all on *.* to root@'%' identified by '密碼' with grant option;
mysql> flush privileges;
mysql> exit;
Windows10 忘記 mysql 5.7 的root密碼的解決辦法:
64位 windows10,MYSQL8.0.13重置密碼(忘記密碼或者無法登錄)
期間,如果想要刪除mysql 8.0 service ,
輸入sc query mysql,查看一下名為mysql的服務
輸入sc delete mysql,刪除該mysql