mysql登陸錯誤:'Access denied for user 'root'@'localhost'

首先是不知道怎麼突然mysql用命令行,workbench都登陸不了,都提示'Access denied for user 'root'@'localhost'。
數據庫卸載重裝了幾回都不行。好像感受數據清理不乾淨。解決的過程遇到的坑,這裏記錄分享下。php

有效的操做記錄下:html

一、首先是跳過權限登陸mysql,查看user表,mysql

中止mysql服務~$ sudo service mysql stoplinux

以安全模式啓動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/mysqldsocket

再次執行上面安全模式啓動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

相關文章
相關標籤/搜索