web-dev-qa-db-ja.com

PostgreSQL-致命的:ユーザーのID認証に失敗しました

データベースemployeesmytestdbというシンプルなテーブルをpostgresに作成しました

このテーブルをhdfsにインポートしたいと思います。

bin/sqoop import --connect 'jdbc:postgresql://127.0.0.1/mytestdb' --username user -P --table employees --target-dir /user/postgres

しかし、私はエラーを受け取り続けます:

警告:127.0.0.1:5432への接続中にSQLExceptionが発生しましたorg.postgresql.util.PSQLException:致命的:org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.Java:473)でユーザー「user」のID認証が失敗しました

/var/lib/pgsql/data/pg_hba.conf次のように設定します。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
Host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
Host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#Host    replication     postgres        127.0.0.1/32            ident
#Host    replication     postgres        ::1/128                 ident
6
usr

私はウェブ上のいくつかの異なるソースの組み合わせから実行可能な解決策を見つけました。

設定ファイルを編集する

nano /var/lib/pgsql/data/pg_hba.configuration

次のように、最初の2つのidentをmd5に置き換えます。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
Host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
Host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#Host    replication     postgres        127.0.0.1/32            ident
#Host    replication     postgres        ::1/128                 ident

ファイルを保存。

次に、サーバーを再起動します

Sudo systemctl restart postgresql

最後に、grant all privileges on database testdb to hduser;

8
usr

詳細については、(CentOSの場合、おそらく/var/lib/pgsql/data/pg_logの)ログファイルを確認してください。

ユーザーが存在しない場合は作成します。 psqlを使用すると、次のように ユーザーを作成 できます。

create role hduser with login, superuser;

または コマンドライン から:

createuser -s -e hduser

identdがインストールされていない場合は、インストールします。

yum install authd xinetd

次に、/etc/xinet.d/authを編集し、disable = yesdisable = noに変更します。

service auth 
{ 
        disable = no 
        socket_type = stream 
        ....
}

xinetdサービスを再起動します。

systemctl restart xinetd
2
Andomar