web-dev-qa-db-ja.com

PostgreSQL DBを作成するためのユーザー権限

私はUbuntuに取り組んでいます。以下は私のコマンドの1つです。

$ psql -U kuser -d postgres

次に、これはデータベースに接続します。しかし、私が試したとき、postgresターミナルから

postgres=> CREATE DATABASE kdb;
ERROR:  permission denied to create database

Ubuntuで同様のコマンドを実行すると、次のようになります。

$ Sudo -u kuser createdb kdb
Sudo: unknown user: kuser
Sudo: unable to initialize policy plugin

このDBを作成するにはどうすればよいですか。私はSudo権限を持っていますが、kuserは私ではありません。

24
dinesh707

kuserというデータベースユーザーがいるようですが、その名前のシステムユーザーは存在しません。これがpostgresプロンプトを取得できる理由ですが、Sudoは失敗します。

アカウントにcreatedb権限がないため、そのユーザーはデータベースを作成できません。

postgresアカウント(Ubuntuのデフォルトの管理アカウント)を使用して、ユーザーにその権限を付与することができます。

Sudo -u postgres psql -c 'alter user kuser with createdb' postgres

または、その管理アカウントを使用してデータベースを作成し、kuserアカウントによって所有されていることを指定します。

Sudo -u postgres createdb -O kuser kdb

そのユーザーが他のデータベースを作成しない場合は、後者のオプションを使用することをお勧めします。アカウントに付与される特権を制限することをお勧めします。

45
qqx