schedule2019-05-14
psql FATA role "ec2-user" does not exist|Amazon Linux2にPostgreSQL10を入れたとき
Amazon Linux2にPostgreSQL10を入れたときpsql
コマンドは使えたが、操作しようとするとき下記のようなエラーが出た。
psql: FATAL: role "ec2-user" does not exist
psql: FATAL: Peer authentication failed for user "postgres"
環境
- Amazon Linux2
- postgres10
インストールとバージョンの確認は以下。
パッケージマネージャはyum
ではなくamazon-linux-extras
を利用した。
$ sudo amazon-linux-extras install postgres10
$ psql -V
psql (PostgreSQL) 10.4
現象
ec2-userで操作すると「ロールec2-userは存在しない」とエラーが出た。
psql -l
はデータベースのリストを確認するコマンド。
[ec2-user@hostname ~]$ psql -l
psql: FATAL: role "ec2-user" does not exist
そこで、psqlの初期ユーザーのpostgres
で操作を試みた。
「ユーザー”postgres”のピア認証に失敗した」とエラーがでた。
[ec2-user@hostname ~]$ psql -l -U postgres
psql: FATAL: Peer authentication failed for user "postgres"
またroot
ユーザーで試しても同様。
[ec2-user@hostname ~]$ sudo psql -l
psql: FATAL: role "root" does not exist
[ec2-user@hostname ~]$ sudo psql -l -U postgres
psql: FATAL: Peer authentication failed for user "postgres"
解決策
psqlの初期ユーザーではなく、実行ユーザーのpostgresで行う。
[ec2-user@hostname ~]$ sudo -u postgres psql -l
could not change directory to "/home/ec2-user": Permission denied
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
psqlの実行権限を変更しないといけない。
実行権限を修正
上記のエラーは設定によるものだった。
実行権限はpg_hba.conf
で設定できる。
# コピー
$ sudo cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.org
# 確認
$ sudo cat /var/lib/pgsql/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
ローカルからの接続のMETHODがpeer
になっていた。
これは実行者のユーザー名とデータベースユーザー名が一致するか検査している。
METHODをtrust
にして接続を無条件で許可するか、md5
でパスワードを求めるようにか変更すると良い。
設定の詳細はドキュメントにある。
【TypeScript】Jestでdescribeなどの関数がnot findになってるのを解消する
TypeScriptテストエラー解消schedule2021-10-10
【TypeScript】JestでインポートしたモジュールがCannot find moduleとなるエラー
TypeScriptテストエラー解消schedule2021-10-10