關于在Ubuntu系統下JDBC連接MySQL資料庫時出現的問題總結
mysql資料庫的root賬號的密碼正確,用終端可以登錄,但是在java程式中jdbc連接MySQL資料庫時報錯:
Exception in thread “main” java.sql.SQLException: Access denied for user ‘root’@‘localhost’
注意前提哦:你的MySQL資料庫root賬號的密碼正確但是在Java程式中報錯
可能原因:因為你在ubuntu中登錄mysql也是用命令:sudo mysql -u root -p 命令登錄,所以在你的java程式中也必須獲取root權限,但此時又無法在java程式中獲得權限,所以會在程式中報錯,因為Java程式也無法獲取Ubuntu系統的root權限,
解決方法:
1. sudo mysql -u root -p #首先通過Ubuntu的sudo權限登錄MySQL的root用戶
2. 在MySQL中創建新用戶
命令:create user 'username'@'localhost' identifiled by 'password'
username:自己想要創建的用戶名
localhost:在本地登錄用戶,如果想讓該用戶可以遠程主機登陸,可以使用通配符%,但自學一般不需要
password:自己想要設定的密碼
3. 授予新用戶所有權限
grant all privileges on *.* to 'username'@'localhost';
mysql里面的設定已經結束
4. 如果自己Ubuntu系統中MySQL版本時8.0,則在注冊jdbc驅動時需要使用:
Class.forName("com.mysql.cj.jdbc.Driver");
而非原來的Class.forName("com.mysql.jdbc.Driver");
5. 連接資料庫的url:
String url = "jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8&serverTimezone=UTC";
MySQL資料庫8.0的版本就是這么麻煩,唉
6. String username = "username";
String password = "password";
conn = DriverManager.getConnection(url, username, password);
第5步中如果使用的是MySQL8.0版本,且查過別的資料后有其他的url路徑寫法,哪種寫法都行,如果運行后出現報錯:"Public Key Retrieval is not allowed"
則在url路徑后繼續添加
&allowPublicKeyRetrieval=true 這一欄位,即
String url = "jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8&serverTimezone=UTC&allowPublicKeyRetrieval=true";
第5步中如果使用的是MySQL8.0版本,且查過別的資料后有其他的url路徑寫法,哪種寫法都行,如果運行后出現報錯:“Public Key Retrieval is not allowed”
則在url路徑后繼續添加**&allowPublicKeyRetrieval=true**這一欄位,即String url = “jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8&serverTimezone=UTC&allowPublicKeyRetrieval=true”;
以上是我個人在Ubuntu系統上用jdbc連接MySQL資料庫時出現的一些問題,也是從網上查了很多資料才最終解決,我希望把我自己所遇到的問題寫出來,也方便大家在遇到這類問題時能夠有很好的解決辦法,
贈人玫瑰,手留余香,如果這篇文章對你有幫助的話,請隨手點個贊再走吧(づ ̄3 ̄)づ╭?~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302737.html
標籤:其他
