Access denied for user 'root'@'localhost' (using password

xshell 剛安裝好mysql,登錄mysql 報錯: Access denied for user 'root'@'localhost' (using password

解決辦法:

關閉mysql:
# service mysqld stop  // rcmysqld stop  或者 kill -term mysql

然後:
# mysqld_safe --skip-grant-tables     //就是在啓動mysql時不啓動grant-tables,授權表,跳過密碼輸入這一項直接連接mysql
啓動mysql:
# service mysqld start
//連接上mysql後可以對mysql密碼進行修改
mysql -u root
mysql> use mysql
mysql> UPDATE user SET Password=PASSWORD('xxx') WHERE user='root';
mysql> flush privileges;   //執行
mysql>\q

很多情況下我們需要遠程連接mysql數據庫,那麼就可以參考下面的權限設置

登錄mysql:

1、xampp中的命令工具在/opt/lampp/bin/目錄中,所以可以這樣運行mysql命令 

/opt/lampp/bin/mysql -uroot -p  

2、也可以進入/opt/lampp/bin/目錄執行mysql命令  

cd /opt/lampp/bin/ 

./mysql -uroot -p 

1,設置訪問單個數據庫權限

mysql>grant all privileges on test.* to 'root'@'%';
說明:設置用戶名爲root,密碼爲空,可訪問數據庫test

2,設置訪問全部數據庫權限

mysql>grant all privileges on *.* to 'root'@'%';
說明:設置用戶名爲root,密碼爲空,可訪問所有數據庫*

3,設置指定用戶名訪問權限

mysql>grant all privileges on *.* to 'tt'@'%';
說明:設置指定用戶名爲tt,密碼爲空,可訪問所有數據庫*

4,設置密碼訪問權限

mysql>grant all privileges on *.* to 'tt'@'%' IDENTIFIED BY '123';
說明:設置指定用戶名爲tt,密碼爲123,可訪問所有數據庫*

5,設置指定可訪問主機權限

mysql>grant all privileges on *.* to 'tt'@'10.2.1.11';
說明:設置指定用戶名爲tt,可訪問所有數據庫*,只有10.2.1.11這臺機器有權限訪問


(下列方法保存,未嘗試,轉載來源:http://blog.csdn.net/ldl22847/article/details/7941962)

解決方案:
1、打開MySQL目錄下的my.ini文件,在文件的最後添加一行“skip-grant-tables”,保存並關閉文件。
2、重啓MySQL服務。
3、在命令行中輸入“mysql -uroot -p”(不輸入密碼),回車即可進入數據庫。
4、執行,“use mysql;”使用mysql數據庫。
5、執行,“update user set password=PASSWORD("rootadmin") where user='root';”(修改root的密碼)
(期間我還select下user表中的記錄,查詢全部的時候顯示了一些亂碼,然後我只查詢了user表中的Host、User、Password字段,貌似當時顯示了3條記錄,有1個沒有名稱。當然,爲了解決問題,這些我也管不了了。)
6、打開MySQL目錄下的my.ini文件,刪除最後一行的“skip-grant-tables”,保存並關閉文件。
7、重啓MySQL服務。
8、在命令行中輸入“mysql -uroot -prootadmin”,問題搞定!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章