2016-12-06 9 views
0

Я пытаюсь запустить некоторые запросы в базе данных mysql на удаленной машине. У меня нет доступа администратора на этом удаленном компьютере, поэтому мне нужно аутентифицировать мои учетные данные на этом компьютере, прежде чем я получу доступ к базе данных (которая также требует проверки имени пользователя и пароля). После прочтения этого сообщения (Read remote file in java which needs username and password) я вижу, как использовать аутентификацию для доступа к удаленному компьютеру, и я знаком с использованием DriverManager для запуска запросов в локальной базе данных; Я просто не знаю, как я могу объединить две функции. Какие-либо предложения?Запрос базы данных sql на удаленной машине с использованием кода Java

+0

Как правило, база данных mysql authenticat ion на удаленной машине отличается от аутентификации на удаленной машине. Это означает, что у mysql есть собственное имя пользователя и пароль, и вы должны иметь возможность подключаться к удаленному серверу mysql, используя это имя пользователя и пароль. Аутентификация на удаленном компьютере не требуется. –

+0

О, это хорошо знать. Так что, если я получаю ошибку «отказ в доступе» при использовании аутентификации mysql с DriverManager.getConnection (...), что может быть причиной ошибки? – user97468

ответ

0

Похоже, что пользователю вы используете для подключения базы данных MySQL не имеет права удаленного доступа, так что вы должны предоставить удаленный доступ к этому пользователю.

Выполните следующие запросы на сервер MySQL как root пользователя для создания нового пользователя и предоставления удаленного доступа к этому пользователю -

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; 

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION; 

CREATE USER 'username'@'%' IDENTIFIED BY 'password'; 

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION; 

FLUSH PRIVILEGES; 

комментарий ниже линии в /etc/mysql/my.cnf файле -

bind-address = 127.0.0.1 

И рестарт тузд server -

sudo service mysql restart 
+0

Чтобы получить удаленный доступ, вам необходимо привязываться к внешнему IP-адресу. –

+0

Спасибо, это оказалось проблемой! база данных не была настроена для удаленного доступа – user97468

0

Использование JDBC http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html. Как вы запускали запросы MySQL раньше? В JDBC вы получаете доступ к удаленным машинам, таким как локальный (EDIT: в коде).

EDIT: Учебник немного богат информацией, поэтому здесь какой-то код, чтобы вы начали:

static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
private static Connection co; 
private Statement st; 

public void connectDb(){ 
    try{ 
     String url = "jdbc:mysql://localhost/dataset"; //url to _DATABASE_ create as mysqlroot first! 
    String user = "theuser"; 
    String password = "thepassword"; 

    Class.forName("com.mysql.jdbc.Driver"); 
    co = DriverManager.getConnection(url, user, password); 
    st = co.createStatement(); 
    co.setAutoCommit(false); 
} catch(Exception e){ 
    e.printStackTrace(); 
} 
} 

Вам нужно получить драйвер JDBC, прежде чем использовать это (см учебник)!

Это, как вы могли бы выполнить запрос:

private ResultSet executeQuery(String query){ 
    ResultSet rs = null; 
    try{ 
     rs = st.executeQuery(query); 
     return rs; 
     } catch(Exception e){ 
      System.out.println(query); 
      e.printStackTrace(); 
     } 
    return rs; 
} 

И это, как обновление может быть выполнено, обратите внимание на разницу между обновлением и запросом!

private void executeUpdate(String query){ 
    try{ 
     st.executeUpdate(query);//data manipulation = executeUpdate 
     } catch(Exception e){ 
      System.out.println(query); 
      e.printStackTrace(); 
     } 
} 

Надеется, что это помогает ^^ - d

+0

Это почти код, который я использую для запросов к локальным базам данных; Однако, когда я пытаюсь выполнить запрос к удаленной базе данных (путем изменения localhost на IP-адрес удаленного сервера), я получаю сообщение об ошибке «Доступ запрещен для ». – user97468

+0

Привет, вам нужно знать учетные данные, и база данных должна быть настроена так, чтобы к ней можно было получить доступ с помощью этих учетных данных и удаленным. Поэтому вам нужно связаться с администратором. Это может помочь администратору: http://stackoverflow.com/questions/6239131/how-to-grant-remote-access-permissions-to-mysql-server-for-user и http://stackoverflow.com/questions/ 16287559/mysql-add-user-for-remote-access надеюсь, что это поможет ^^ –

 Смежные вопросы

  • Нет связанных вопросов^_^