Соединение Redshift JDBC не проходит аутентификацию, когда пароль пользователя содержит символ #

Я столкнулся с проблемой подключений JDBC к Redshift, которую не могу решить. Используя пример, приведенный в документации, я могу легко подключиться к кластеру Redshift, когда у пользователя есть простой пароль, но когда у пользователя есть пароль с символом #, я получаю ошибку аутентификации. Я могу подключиться к кластеру, используя SQL Workbench/J, используя оба набора учетных данных. Когда я использую следующее, нет проблем с подключением.

        DriverManager.setLoginTimeout(60);
        Properties props = new Properties();
        props.setProperty("user", "johndoe");
        props.setProperty("password", "superSecret");
        props.setProperty("tcpKeepAlive", "true");

        Connection connection = DriverManager.getConnection("jdbc:redshift://xxxxxxx.us-east-1.redshift.amazonaws.com:5439/dev", props);

Когда я использую следующее,

        DriverManager.setLoginTimeout(60);
        Properties props = new Properties();
        props.setProperty("user", "johndoehash");
        props.setProperty("password", "superDouble#Secret");
        props.setProperty("tcpKeepAlive", "true");

        Connection connection = DriverManager.getConnection("jdbc:redshift://xxxxxxx.us-east-1.redshift.amazonaws.com:5439/dev", props);

Я получаю ошибку аутентификации

java.sql.SQLException: [Amazon](500310) Invalid operation: password authentication failed for user "johndoehash";
  at com.amazon.redshift.client.messages.inbound.ErrorResponse.toErrorException(ErrorResponse.java:1830)
  at com.amazon.redshift.client.InboundDataHandler.read(InboundDataHandler.java:454)
  at com.amazon.support.channels.AbstractSocketChannel.readCallback(Unknown Source)
  at com.amazon.support.channels.PlainSocketChannel.read(Unknown Source)
Caused by: com.amazon.support.exceptions.ErrorException: [Amazon](500310) Invalid operation: password authentication failed for user "johndoehash";

Я могу войти в кластер с обеими учетными записями, используя SQL Workbench/J, но по какой-то причине я не могу подключиться через свое приложение. Есть идеи, что я делаю не так?

2 ответа

Это действительно странно, но если я использую годичную версию Java 8 с моим приложением

java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)

Проблема уходит... Иди разберись.

У меня недостаточно очков, чтобы комментировать. Я не знаю, решит ли это вашу проблему или нет. Но попробуйте это:

props.setProperty("пароль", "superDouble& #35; Секрет");

Без пробела между "&" и "#35;"

альтернативно

props.setProperty("пароль", "superDouble%23Secret");

Другие вопросы по тегам