Соединение JDBC из Ubuntu 11.10 в Amazon EC2 BitNami LampStack экземпляр - доступ запрещен (с использованием пароля: ДА) - PullRequest
1 голос
/ 06 января 2012
  • Моя локальная машина работает под управлением Ubuntu 11.10. Я использую Eclipse Indigo в качестве своей IDE.
  • Мой сервер - это BitNami LampStack (Ubuntu 10), работающий на Amazon EC2.
  • Я относительно опытен как в .Net, так и в Java, но новичок в JDBC, администрировании MySQL, Linux и EC2 .

Я успешно открыл порт 3306, и MySQL Workbench может подключиться правильно. Пользователь 'root' @ '%' имеет полные права на все и не имеет базы данных по умолчанию.

После борьбы с проблемой, когда драйвер не найден, я, наконец, просто поместил mysql-connector-java-5.0.8-bin.jar прямо в мой Java-проект. Я понимаю, что это, вероятно, неоптимально, но, похоже, работает. Я сделал это (после долгих поисков), потому что я не могу понять, как правильно установить его в Ubuntu, и боюсь, что через ssh к EC2 будет сложнее, поэтому я решил, что он может просто скомпилироваться в проект. Ссылка была бы признательна, так как было бы неплохо это исправить.

Ниже приведен код, который выдает исключение. Это наверху главного; ничего не выполняется первым.

Я пробовал это с использованием Class.forName (...) и без него, а также с использованием java.util.Properties для учетных данных. Идентичные учетные данные работают из MySQL Workbench на той же машине, которую я скопировал + вставил несколько раз, чтобы избежать опечаток.

Я изменил пароли и адреса в целях безопасности, но сохранил формат. Чтобы быть точным, пароль здесь "Abcdef1234 #". Насколько я знаю, # может быть виновником.

Class.forName("com.mysql.jdbc.Driver");
String CONNECTION_STRING = "jdbc:mysql://ec2-87-212-16-34.compute-1.amazonaws.com?user=root&password=Abcdef1234#";
Connection cn = DriverManager.getConnection(CONNECTION_STRING);

Который затем бросает:

Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'ppp-72-135-32-239.dsl.hgyuct.swbell.net' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:885)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3421)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1247)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:620)
at java.sql.DriverManager.getConnection(DriverManager.java:222)
at Program.main(Program.java:5)

Дайте мне знать, если мне нужно больше информации.

1 Ответ

1 голос
/ 10 января 2012

Проблема заключалась в том, что пароль 'root'@'localhost' отличался от пароля 'root'@'%', поэтому при подключении из JDBC использовался старый пароль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...