出錯with root cause


【背景:】

  我自己寫了一個項目,主頁可以看到一個數據庫里的一個應用的users用戶表的所有數據,包括用戶的年齡,姓名,出生日期等信息。后來又想再增加一個注冊功能,寫好了之后進行單元測試,結果就出現了with root cause的錯誤,找了一個遍,才找到了原因。

  首先,我安裝的數據庫mysql中的user都是默認的一共四個用戶。分別是:

localhost root
127.0.0.1 root
::1 root
localhost  

( 前四列:Host、User、Password,分別表示主機名、用戶名和密碼Host和User列為user表的聯合主鍵,當用戶與服務器建立連接時,輸入的用戶名、主機名和密碼必須匹配user表中對應的字段,只有這三個值,都匹配的時候,才允許建立連接。 當修改密碼時,只需要修改user表中Password字段的值。這些用戶開始都是沒有設置密碼的,並且權限也不同,前三個用戶都是root用戶,擁有數據庫的大多數權限,包括增刪改查等,而最后一個用戶的沒有數據庫的任何權限。開始的時候,我寫的查詢就是沒有密碼的,鏈接數據庫的時候,直接

driver="com.mysql.jdbc.Driver";
url="jdbc:mysql://localhost:3306/test";
user="root";
password="";

DriverManager.getConnection(driver,url,user,password);

  經過試驗發現這樣只能獲取到數據庫里面的數據,但是不能對數據庫進行程序上的操作,於是我在數據庫中執行了以下操作,將所有用戶的密碼設置為了root。

update user set  password="root"; 結果這樣之后數據庫用root 用戶和root密碼都登陸不了了,這樣就出現了我之前寫的那個數據庫連接失敗的博客的現象,最后找到了一個完美修改數據庫默認密碼的方法,只需要

【步驟】

1.打開dos界面

2.進入到mysql的安裝目錄的bin

3.mysql -u [你的用戶一般用root] -p回車

4.系統會提示你輸入密碼,如果一開始就是沒有密碼的,直接回車可以進入,

5.mysql>use mysql

6. mysql>update user set password=PASSWORD("root") where user="root"

7.最關鍵的一步:flush privileges;刷新MySQL的系統權限相關表,否則會出現拒絕訪問。這一步才是關鍵所在啊,之前就是不知道這一步,導致很多地方出錯,搞不明白。

7.exit 回車退出mysql>

 Access denied for user 'root'@'localhost' (using password: YES)這個問題有時也是因為數據庫默認密碼為空導致的,可以按照上面的步驟試試。

這樣之后就可以完美的通過java程序來操作數據庫了,完美收工!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM