2017-01-26 16 views
0

У меня проблема с подключением к MySQL, я искал в Google и этом веб-сайте, и есть решения проблемы, но они не работают в моем коде. Вот код:Ошибка соединения с MySQL; Нет доступа

public static String host = SQL.getInstance().getConfig().getString("Config.SQLhost"); 
public static String port = SQL.getInstance().getConfig().getString("Config.SQLport"); 
public static String database = SQL.getInstance().getConfig().getString("Config.SQLdatabase"); 
public static String username = SQL.getInstance().getConfig().getString("Config.SQLusername"); 
public static String password = SQL.getInstance().getConfig().getString("Config.SQLpassword"); 
public static Connection con; 

public static void connect(){ 
    if(!isConnected()){ 
     try { 

      con = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password); 
      System.out.println("[SQL] Connected with MySQL."); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
public static boolean isConnected(){ 
    return (con == null ? false : true); 
} 

А вот отчет об ошибке:

java.sql.SQLException: Access denied for user 'localhost'@'localhost' (using password: YES) 

[21:04:26 WARN]: в com.mysql.jdbc.SQLError.createSQLException (SQLError.java:959) [21:04:26 WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3870) [21:04:26 WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO) .java: 3806) [21:04:26 WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:871) [21:04:26 WARN]: at com.mysql.jdbc. MysqlIO.proceedHandshakeWithPluggableAuthentication (MysqlIO.java:1686) [21:04:26 WARN]: at com.mysql.jdbc.MysqlIO.doHandshake (MysqlIO.java:1207) [21:04:26 WARN]: at com. mysql.jdbc.ConnectionImpl.coreConnect (ConnectionImpl.java:2254) [21:04:26 WARN]: at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly (ConnectionImpl.java:2285) [21:04:26 WARN] : at com.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:2084) [21:04:26 WARN]: at com.mysql.jdbc.ConnectionImpl. (ConnectionImpl.java:795) [21:04: 26 WARN]: at com.mysql.jdbc.JDBC4Connection. (JDBC4Connection.java:44) [21:04:26 WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) [21:04:26 WARN ]: at sun.reflect.NativeConstructorAccessorImpl.newInstance (Unkn собственный источник) [21:04:26 WARN]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (Неизвестный источник) [21:04:26 WARN]: at java.lang.reflect.Constructor.newInstance (Неизвестный источник) [21:04:26 WARN]: at com.mysql.jdbc.Util.handleNewInstance (Util.java:404) [21:04:26 WARN]: at com.mysql.jdbc.ConnectionImpl.getInstance (ConnectionImpl.java : 400) [21:04:26 WARN]: at com.mysql.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java:327) [21:04:26 WARN]: at java.sql.DriverManager.getConnection (Неизвестно Источник) [21:04:26 WARN]: at java.sql.DriverManager.getConnection (Неизвестный источник)

Надеюсь, вы можете мне помочь. Приветствую вас, Curbe.

+0

, пожалуйста, разместите ошибку как текст, а не как внешнее изображение. – pedrorijo91

+0

В вашей базе данных есть пользователь с именем 'localhost'? Кажется, либо пользователь не существует, либо не имеет достаточного разрешения или пароль неверен. Проверь это. – ujulu

ответ

0

Согласно stacktrace, вы пытаетесь войти в систему с локальным хостом @ localhost. Я думаю, что это должно быть:

[email protected] 

Кроме того, вы должны объявить переменные как частные, как:

private static String username = SQL.getInstance().getConfig().getString("Config.SQLusername"); 
+0

Спасибо за вашу помощь, но так оно и отображается, данные называются localhost, а не «localhost». – Curbe

0

Посмотрите на обновленный код ниже.

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 

public class MySqlConnection { 
    // Replace credentials with correct values 
    private static String host = "localhost"; 
    private static String port = "3306"; 
    private static String database = "test"; 
    private static String username = "root"; 
    private static String password = "root"; 
    private static Connection con; 

    public static void main(String[] args) throws ClassNotFoundException{ 
     if(!isConnected()){ 
      try { 
       Class.forName("com.mysql.jdbc.Driver"); 
       con = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password); 
       System.out.println("[SQL] Connected with MySQL."); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
    public static boolean isConnected(){ 
     return (con == null ? false : true); 
    } 
} 

Не забудьте добавить mysql-connector-java-5.0.8-bin.jar к вашему проекту. Также должны быть объявлены локальные переменные private.

+0

Спасибо, я попробовал, но он не работает, я медленно теряю надежду – Curbe

+0

@Curbe Я пробовал это сам. Это сработало для меня.убедитесь, что ваши учетные данные верны, и добавлена ​​jar. Также попробуйте отладить и убедитесь, что ваши значения загружены правильно и существует схема DB. – HPatel

+0

Сделать простую проверку Полный код Я пробовал использовать метод main(). @Curbe – HPatel