Redshift连接问题:致命错误:用户密码验证失败

时间:2015-01-07 18:35:39

标签: postgresql ssl jdbc amazon-redshift

我们正在远程连接到AWS Redshift实例。

我们可以成功连接Aginity工作台。

但是,我们无法连接基于JDBC的工具(DBVisualizer)。

我们正在使用Postgresql驱动程序8.4-703(来自Redshift docs)。

需要SSL。

我们使用非标准端口(1433)。

返回的消息是

FATAL: password authentication failed for user xxxx

JDBC字符串

jdbc:postgresql://xxxxxxx.us-west-2.redshift.amazonaws.com:1433/dev?tcpKeepAlive=true

调试是:

org.postgresql.util.PSQLException: FATAL: password authentication failed for user "xxxx"
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:291)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:108)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
    at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
    at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:30)
    at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
    at org.postgresql.Driver.makeConnection(Driver.java:393)
    at org.postgresql.Driver.connect(Driver.java:267)
    at sun.reflect.GeneratedMethodAccessor55.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.onseven.dbvis.g.B.D.?(Z:1413)
    at com.onseven.dbvis.g.B.F$A.call(Z:1474)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
SQLException: SQLState(28000)

更新:我在JDBC字符串中添加了SSL = true ..

新字符串:

jdbc:postgresql://xxxxxxx.us-west-2.redshift.amazonaws.com:1433/dev?tcpKeepAlive=true&ssl=true

新调试是:

org.postgresql.util.PSQLException: The connection attempt failed.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:150)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
    at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
    at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:30)
    at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
    at org.postgresql.Driver.makeConnection(Driver.java:393)
    at org.postgresql.Driver.connect(Driver.java:267)
    at sun.reflect.GeneratedMethodAccessor55.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.onseven.dbvis.g.B.D.?(Z:1413)
    at com.onseven.dbvis.g.B.F$A.call(Z:1474)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
SQLException: SQLState(08001)

显然,我们已经检查了四倍的密码。

1 个答案:

答案 0 :(得分:1)

要为JDBC启用SSL选项,您必须下载红移证书并将其添加到计算机上的Java系统信任库中。

以下是步骤:

  • here下载Amazon Redshift证书文件。

  • 将Redshift证书注册到Java系统信任库。

    • 运行${JAVA_HOME}/bin/keytool -keystore ${JAVA_HOME}/lib/security/cacerts -import -alias <alias> -file <certificate_filename>
    • 运行${JAVA_HOME}/bin/keytool -keystore <keystore_name> -alias <alias> -import -file <certificate_filename>以创建自己的信任库,如果您没有访问cacerts的权限。
    • 默认密码为changeit
  • 在java VM属性中指定密钥库和密码
    • 打开[DbVisualizer] - &gt; [偏好] - &gt; [一般]标签 - &gt; [一般]
    • 编辑&#34; Java VM属性&#34;部分
      • -Djavax.net.ssl.trustStore=key_store_name_or_path
      • Djavax.net.ssl.trustStorePassword=password
    • 应用并重新启动

可能需要针对您的环境更改上述命令中的某些路径。有关详细信息,请参阅Amazon Redshift Management Guide

对于身份验证错误,应用程序级别可能存在不受支持的密码符号。值得尝试更改密码,使其简单,只包含&#34; _&#34;符号。