2012-06-18 18 views
1

Я пытаюсь подключиться к серверу MySQL с помощью JDBC-инструмента в java (используя eclipse). Мне просто интересно, как ввести 2 комбинации пользовательских/паролей. Первый - тот, который я использую для подключения к серверу (например, когда я ssh на сервере), а второй - в phpmyadmin. На данный момент я вводил пароль phpmyadmin только в свойствах подключения jdbc и не подключался. Это мое текущее заявление:Подключение к серверу MySQL JDBC

conn = DriverManager.getConnection("jdbc:mysql://[IP of server]:3306/[Database Table name]", "[UserName (same as phpmyadmin)]","[Password (same as phpmyadmin)]"); 

Я получаю

java.sql.SQLException: null, message from server: "Host '[My computer's full host name]' is not allowed to connect to this MySQL server" 

мне было просто интересно, если мне нужно, чтобы войти в мой сервер логин/пароль (тот, который я использую для SSH), а также в дополнение к имени пользователя/pwd phpmyadmin. Я новичок в JDBC и сервере MySQL, поэтому я был бы признателен за любые советы.

Только для фона, я могу успешно подключиться через ssh, и я могу войти на сервер через phpmyadmin.

+0

Ваш сервер баз данных MySQL работает на том же компьютере, что и ваши клиенты? – Marvo

+0

И нет, ваш логин/пароль вашего сервера здесь не играет. MySQL выполняет свою аутентификацию и авторизацию. – Marvo

+0

Он не работает на том же компьютере, который пытается подключиться к нему, нет. – Kgrover

ответ

3

Когда вы входите в систему с PHPMyAdmin, веб-сервер находится на том же сервере, на котором размещена база данных Mysql (в вашем случае). Mysql, по умолчанию, не разрешает подключения с удаленных хостов; только локальная машина может обращаться к базе данных.

Я сделаю снимок в темноте и скажу, что компьютер, на котором работает java-код, - это не та же машина, на которой размещается сервер mysql. Вы должны настроить Mysql, чтобы разрешать соединения с удаленными узлами через файл конфигурации, а затем изменять строку Host в mysql. users таблица для указанного пользователя, разрешающая подключение с вашего IP-адреса (или, если безопасность не является для вас проблемой, любой IP-адрес.)

Чтобы настроить mysql для разрешений соединений с удаленных хостов, вы должны удалить «bind-address» = "из файла конфигурации.

Чтобы разрешить любому хосту входить в систему определенному пользователю mysql, вы должны установить mysql. users Столбец Host` для "%".

Оба они должны быть выполнены.

+0

Спасибо. Я попробую его, как только смогу, и я дам вам знать (и тогда я тоже приму ответ). – Kgrover

+0

Конфигурационный файл - my.cnf, правильно? – Kgrover

+0

это правильно. проверьте http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html. Он специально не говорит об удалении строки bind-address =, но это то, что я сделал, когда у меня была эта проблема, и она работала нормально. –

6

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

CREATE USER 'bobby'@'localhost' IDENTIFIED BY 'some_password'; 

Это создает пользователь, и говорит, что он может соединиться с локального хоста.

Если он на машине 192.168.0.5, вы могли бы сделать что-то вроде этого:

CREATE USER 'bobby'@'192.168.0.5' IDENTIFIED BY 'some_password'; 

Тогда, конечно, вы должны предоставить привилегии соответствующим:

GRANT ALL PRIVILEGES ON databasename.* TO 'bobby'@'localhost' WITH GRANT OPTION; 
GRANT ALL PRIVILEGES ON databasename.* TO 'bobby'@'192.168.0.5' WITH GRANT OPTION; 

Это был мой опыт в любом случае.

Возможно, вам лучше читать this section on how to specify MySQL accounts.

+0

Я не могу попробовать это сегодня вечером, но завтра утром и дам вам знать. – Kgrover

+0

Требуется несколько попыток (или сделал для меня.) Одиночные кавычки важны и немного не интуитивно понятны. И вам, возможно, придется выполнить ответ Алекса ниже. – Marvo

0
public class MysqlConnect{ 
    public static void main(String[] args) { 
    System.out.println("MySQL Connect Example."); 
    Connection conn = null; 
    String url = "jdbc:mysql://localhost:3306/"; 
    String dbName = "jdbctutorial"; 
    String driver = "com.mysql.jdbc.Driver"; 
    String userName = "root"; 
    String password = "root";`enter code here` 
    try { 
    Class.forName(driver).newInstance(); 
    conn = DriverManager.getConnection(url+dbName,userName,password); 
    System.out.println("Connected to the database"); 
    conn.close(); 
    System.out.println("Disconnected from database"); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
    } 
} 
Смежные вопросы