java - 在 ubuntu 18.04 中通过 eclipse 与 mySql(mysql 5.7.22) 进行 JDBC 连接时出现错误

标签 java mysql eclipse jdbc ubuntu-18.04

请帮忙解决这个错误。相同的代码在 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/

相关文章:

MySQL – 在 5.6 之前的 SELECT 中断中同时进行浮点增量和赋值

java - J脸/SWT : What is the best way to add a toolbar with Commands to a Section?

java - 无法将 Object 或 instanceof 转换为 true 到 IProject || Java Eclipse 插件开发

java - 访问在不同类中调用的另一个类

java.lang.UnsatisfiedLinkError - android studio gradle 中的 NDK?

java - Spring集成tcp-connection-factory在回复之前关闭客户端连接

java - 从 MySQL 中检索部分数据的数据

java - 修复路径操作错误

mysql - 混淆 MySQL 备份中的个人数据

java - Eclipse 插件的自定义启动画面(非 RCP)