2013-07-31 3 views
0

Я создаю сканер подключения к базе данных для моего курса по безопасности в университете. Я использовал DriverManager.getConnection (connectionURL, имя пользователя, пароль), и, похоже, он работает нормально, но с одним исключением, которое я просто не могу понять. Если я введу неправильное имя пользователя, оно все равно возвращает соединение ??? мой тестовый код вставлен ниже. Любые указатели будут высоко оценены. Он возвращает правильную ошибку, если я ввожу неверный пароль, если я выключу сервер, это говорит мне. Но по какой-то неизвестной причине он не скажет мне, ошибочно ли имя пользователя, как будто оно даже не проверяет!Коннектор MYSQL говорит, что он подключен даже с неправильным именем пользователя?

public class DBConnector { 


Connection connection = null; 
String dbURL = "jdbc:mysql://localhost:3306"; 
String userName; 
String password; 


public DBConnector() { 
    // TODO Auto-generated constructor stub 
} 

public Connection tryConnection(String username, String password){ 
    try { 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     connection = DriverManager.getConnection(dbURL, username, password); 

     System.out.println("Connected"); 

    } catch (InstantiationException e) { 
     System.out.println("No Connection"); 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     System.out.println("Connection Refused"); 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SQLException e) { 
     System.out.println("Sql Ex"); 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return connection; 

} 
} 

И вот мой основной класс для запуска метода.

public class MainTest { 

public static void main(String[] args) { 

    DBConnector dbc = new DBConnector(); 

    dbc.tryConnection("", ""); 

} 

} 

Возможно, это как-то связано с запуском теста на «Localhost»?

Большое спасибо!

+0

Можете ли вы подключиться к экземпляру базы данных без имени пользователя или пароля с помощью клиента mysql? – Kayaman

ответ

1

Я бы предположил, что вы входите в систему как anonymous user.

Вы можете сделать локальную установку MySQL Server более безопасной (и, следовательно, заставить ваш код выше, чтобы бросить ошибку) путем удаления анонимного пользователя, как это:

DELETE FROM mysql.user WHERE user=''; 

FLUSH PRIVILEGES; 

Затем попробуйте подключить без какого-либо имени пользователя и пароля.

+0

Большое спасибо, я понял проблему, и это было в значительной степени то, что вы описали, я не дал пароль пользователю «root», который, по-видимому, переопределяет функции безопасности и позволяет анонимным пользователям. Решила это сейчас большое спасибо –