当前位置: 首页 > 知识库问答 >
问题:

在ubuntu 18.04中通过eclipse使用mySql(mysql 5.7.22)进行JDBC连接时出错[重复]

呼延修然
2023-03-14

请帮助解决这个错误。同样的代码在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)

共有1个答案

汝天宇
2023-03-14

也许用户root没有足够的权限从localhost连接。您可以通过命令行/shell选中此项以连接到数据库。使用以下命令进行连接:

mysql --host=localhost --user=root --password=root mydb

如果连接不成功,则应更新用户凭据。

出于测试目的,您可以将所有权限授予用户。这可以在连接到mysql后完成。

GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'%' WITH GRANT OPTION;
 类似资料:
  • 我们所面临的问题已在许多文件中得到充分证明https://stackoverflow.com/questions/34189756/warning-about-ssl-connection-when-connecting-to-mysql-database. 从过渡到时,我们就开始面临这个问题。建议的修复方法对我们有效,但我们有一个问题,我们不想更新Java源文件以进行更改,例如从 到 正如在ht

  • 问题内容: 我正在尝试通过网络连接到MySQL数据库。我已经安装了MySQL,并且该服务在默认端口上运行。我还将SQL连接器安装到jar文件中,并将Java JDK添加到服务器计算机中。我可以使用以下代码连接到本地数据库: 但是,当我尝试通过IP地址(例如:192.168.1.45)通过网络连接到它时: 我收到连接错误: 有人知道这个问题是什么吗?我需要添加其他地址吗?我已经使用地址添加了默认端口

  • 我正在尝试使用Google Apps脚本连接到MicrosoftSQLServer。我正在使用SQLServer 2008 R2,我正在使用建议的脚本之一,该脚本应该读取数据并将其放入电子表格:https://developers.google.com/apps-script/jdbc#reading_from_a_database 错误消息是: 无法建立数据库连接。检查连接字符串、用户名和密码

  • 同时,我尝试使用mysql workbench进行连接,它会立即拒绝连接。让我想,它甚至连连接ssh tunel的机会都没有,在本地被拒绝了。

  • 我正在尝试通过JDBC连接到使用Eclipse(版本Juno)的IBMDB2数据库。我已经将驱动程序(外部jar文件)添加到我的项目中,并且驱动程序已正确加载… 我还知道连接数据(数据库路径、用户名、密码)是正确的。但我得到一个java.lang.NoClassDefFoundError: 项目属性肯定有问题但是我真的不知道去哪里找。

  • 我在控制台中不断得到关于时区的相同错误,但我从未尝试在代码中设置时区。 控制台中的错误消息: 连接失败!检查输出consolejava.sql.sqlexception:服务器时区值“pdt”无法识别或表示多个时区。如果要利用时区支持,则必须配置服务器或JDBC驱动程序(通过serverTimezone配置属性)以使用更指定的时区值。