Получение ошибки при соединении JDBC с mySql (mysql 5.7.22) через eclipse в ubuntu 18.04 [duplicate]

0

пожалуйста, помогите решить эту ошибку. тот же код отлично работает в окнах. но я не понимаю, почему он не работает в 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('[email protected]','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 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)
  • 0
    Можете ли вы попробовать без CLass.forName, пожалуйста, просто удалите его
  • 0
    не работает. Все еще получаю ошибку.
Показать ещё 3 комментария
Теги:
jdbc
ubuntu-18.04

1 ответ

0

Возможно, у пользователя root нет достаточных прав для подключения с localhost. Вы можете проверить это, чтобы подключиться к базе данных из командной строки/оболочки. Используйте следующую команду для подключения:

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

Если соединение не является успешным, тогда пользовательские учетные данные должны быть обновлены.

В целях тестирования вы можете предоставить все права пользователю. Это можно сделать после подключения к mysql.

GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'%' WITH GRANT OPTION;
  • 0
    после запуска этой команды на терминале, то mysql запустился
  • 0
    @Amit Singh: Вы пытались дать больше прав пользователю?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню