首先是不知道怎麼突然mysql用命令行,workbench都登陸不了,都提示'Access denied for user 'root'@'localhost'。
數據庫卸載重裝了幾回都不行。好像感受數據清理不乾淨。解決的過程遇到的坑,這裏記錄分享下。php
有效的操做記錄下:html
一、首先是跳過權限登陸mysql,查看user表,mysql
中止mysql服務~$ sudo service mysql stop
linux
以安全模式啓動MySQL~$ sudo mysqld_safe --skip-grant-tables &
sql
注意:
可能提示mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exist
數據庫
解決方法:(筆者嘗試發現必須加sudo)
sudo mkdir -p /var/run/mysqld
安全
sudo chown mysql:mysql /var/run/mysqld
socket
再次執行上面安全模式啓動mysql ~$ sudo mysqld_safe --skip-grant-tables &
ui
此次提示語句顯示了,mysqld_safe Staring mysqld deamon with database from /var/lib/mysql
.net
此次登陸能夠不用密碼:mysql -u root 回車就登陸了
sql語句查詢mysql.user表的狀況,以下:
加圖片(之後補)
還有人提議以下這麼作,沒嘗試
Open & Edit /etc/my.cnf or /etc/mysql/my.cnf, depending on your distro.
Add skip-grant-tables under [mysqld]
二、發現user的plugin爲socket_plugin,改成mysql_native_password
修改root的plugin權限:
update mysql.user set authentication_string=PASSWORD('newPwd'), plugin='mysql_native_password' where user='root';
flush privileges;
quit;
(注意這裏修改必定要正確,省得跟筆者同樣,粗心的把plugin修改的內容少些了一個字母,又有下面的折騰)
三、user表還有其餘用戶,root不能登陸,用其餘的用戶登陸也行啊。查詢了發現一下有效操做:
在mysql的安裝目錄,通常在 /etc/mysql裏面有個debain.cnf文件,裏面有user,password,用這個用了登陸,密碼最後複製,而後就又能夠修改user表root的plugin,操做同上。
重啓mysql服務, sudo service mysql restart;
用root用戶就能夠登陸。
參考博客: MySQL ERROR 1698 (28000) 錯誤 https://www.cnblogs.com/leolztang/p/5094930.html mysql 查看當前使用的配置文件my.cnf的方法 https://blog.csdn.net/fdipzone/article/details/52705507 linux -- Ubuntu查看修改mysql的登陸名和密碼、安裝phpmyadmin https://www.cnblogs.com/hf8051/p/4775627.html