web-dev-qa-db-ja.com

PostgreSQLでデータベースを作成する権限をユーザーアカウントに付与する

PostgreSQLのユーザーアカウントにデータベースを作成および削除する機能を付与するにはどうすればよいですか? GRANTでこれを行う方法はありますか?

148
GSto

ALTER USER username CREATEDB;で完了

ドキュメントのALTER USER を参照してください。

データベースを削除するには、スーパーユーザーである(ALTER USERでも付与できる)か、データベースを所有している必要があります。

191
Daniel Vérité

まず、postgresユーザーとしてログインする必要があります。

$ Sudo -u postgres psql postgres

# \password postgres

Enter new password:

Postgresユーザー(PostgreSQLの特別な種類のユーザー)の新しいパスワードを入力すると、postgresとしてログインし、他のユーザーに権限を付与できます。 user1という名前のユーザーがいるとします。彼にデータベースを作成および削除する機能を付与するには、次のように(postgresユーザーとして)作成する必要があります。

ALTER USER user1 CREATEDB;

お役に立てれば...

37
Tomislav

CREATEROLEおよびCREATEDB権限で最初からユーザーを作成する

コマンドラインクライアントを使用してPGサーバーにログインした後、createユーザー(postgresユーザーのように、UNIXのデフォルトでシステムのスーパーユーザーは$ Sudo -u postgres psql postgres)を使用して簡単に偽装できます。

CREATE ROLE user_name PASSWORD 'tYPe_YoUr_PaSSwOrD' NOSUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
  • NOSUPERUSER-作成中のユーザーにはスーパーユーザー権限がありません(postgresユーザーのように推奨)。
  • CREATEDB-作成されるユーザーは、所有するデータベースを作成できます。
  • CREATEROLE-作成されるユーザーは、所有するオブジェクトまたは特定のアクセス権を持つオブジェクト(作成したデータベースなど)のロール(ログイン)を作成できます。
  • INHERIT-作成されるユーザーは、デフォルトのオプションをいくつか継承します(オプション)。
  • ログイン-作成中のユーザーはログインする権利を持っています。

PGバイナリ(アプリケーション)も使用できます。たとえば、上記のSQLは次を実行することと同等です。

Sudo -u postgres createuser --createdb --createrole --pwprompt user_name

既存のユーザーにDBを作成する権限を与える

コマンドラインクライアントを使用してPGサーバーにログインした後、alterユーザー(postgresユーザーのように、UNIXのデフォルトではシステムのスーパーユーザーは$ Sudo -u postgres psql postgres)を使用して簡単に偽装できます。

ALTER USER user_name CREATEDB;

または、上記の例と同じ権利を与えるには:

ALTER USER user_name CREATEDB CREATEROLE LOGIN;