データベースemployees
のmytestdb
というシンプルなテーブルを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
私はウェブ上のいくつかの異なるソースの組み合わせから実行可能な解決策を見つけました。
設定ファイルを編集する
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;
詳細については、(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 = yes
をdisable = no
に変更します。
service auth
{
disable = no
socket_type = stream
....
}
xinetd
サービスを再起動します。
systemctl restart xinetd