请帮忙解决这个错误。相同的代码在 Windows 中运行良好。但我不明白为什么它不能在 Linux(Ubuntu 18.04) 中运行。
以下代码:
import java.sql.*;
public class HelloWorld {
public static void main(String[] args) {
Connection con = null;
Statement st = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","root");
String sql = "insert into mytable values('amsing@gmail.com','amit1234')";
st = con.createStatement();
int x = st.executeUpdate(sql);
if(x==1) {
System.out.println("Record inserted");
}else {
System.out.println("Record not inserted");
}
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(st!=null)st.close();
if(con!=null)con.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
运行代码时抛出此异常:
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
Sat Jul 07 12:52:40 IST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
java.sql.SQLException: Access denied for user 'root'@'localhost'
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at com.amitsingh.HelloWorld.main(HelloWorld.java:10)
最佳答案
也许用户root
没有足够的权限从localhost进行连接。
您可以检查此项以从命令行/shell 连接到数据库
使用以下命令进行连接:
mysql --host=localhost --user=root --password=root mydb
如果连接不成功,则应更新用户凭据。
出于测试目的,您可以向用户授予所有权限。连接mysql后即可完成此操作。
GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'%' WITH GRANT OPTION;
关于java - 在 ubuntu 18.04 中通过 eclipse 与 mySql(mysql 5.7.22) 进行 JDBC 连接时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51221044/