スーパーユーザーはログインできません


32

次のコマンドでスーパーユーザーポータルを作成しました

create role portal with superuser password 'portal'

ポータルユーザーでpostgresにログインしようとすると、レールで次のエラーが発生します。

FATAL:  role "portal" is not permitted to log in

私は何が起こっているのかを追うことができません。

もちろん、ログインコマンドを使用してユーザーを変更し、ポータルユーザーがログインできるようにします。スーパーユーザーがログインできない理由を理解したいと思います。


2
そのためroleにログインすることができませんあなたが使用している必要があります。create userあなたは、ログインすることができます何かをしたい場合。
a_horse_with_no_name

1
@a_horse_with_no_name正確には、ロールとユーザーに違いはありませんが、との間にCREATE ROLEありCREATE USERます。クレイグの答えを参照してください。
dezso

回答:


57

LOGIN権利を指定しませんでした:

ALTER ROLE portal WITH LOGIN;

権利のCREATE USER代わりに使用するとCREATE ROLELOGIN自動的に付与されます。それ以外の場合WITHは、CREATEステートメントの句で指定する必要があります。

スーパーユーザーには本質的にLOGIN権利がありません。この権限については、スーパーユーザーに対して引き続き権限チェックが実行されます。これは、スーパーユーザーの役割を持つことができるが、SET ROLE直接接続することはできないためです。


4
CREATE ROLE 'portal' WITH LOGIN SUPERUSER PASSWORD 'portal';

サイトへようこそ!あなたの答えには説明がありません-見渡せば、良い答えは常に何をするのかだけでなくなぜするのを教えてくれます。これを考慮して、あなたの答えはクレイグの答えに何を追加しますか?
dezso
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.