- Моя локальная машина работает под управлением 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)
Дайте мне знать, если мне нужно больше информации.