コマンドラインからデータベースを作成する


回答:


144

ユーザーをpostgresに変更します:

su - postgres

Postgresのユーザーを作成する

$ createuser testuser

データベースの作成

$ createdb testdb

postgresシェルにアクセスします

psql ( enter the password for postgressql)

postgresユーザーに特権を提供します

$ alter user testuser with encrypted password 'qwerty';
$ grant all privileges on database testdb to testuser;

21
重要:createuserとcreatedbはシェルで実行され、psqlでは実行されません
キムカーン2017

20
psqlで実行した場合でも、正しいコマンドは次のとおりです。create user testuser; create database testdb;
キリル

63

試してみてください:

sudo -u postgres psql -c 'create database test;'

8
権限も付与することを忘れないでください:sudo -u postgres psql -c 'grant all privileges on database test to username;'
lukyer 2017

29

createdbは、psqlからではなくbashから実行できるコマンドラインユーティリティです。psqlからデータベースを作成するには、次のようにcreatedatabaseステートメントを使用します。

create database [databasename];

注:SQLステートメントは必ずで終了してください。 ;


2
プラス1で終わることについてのヒント;
Jstuff 2018

Postgresが大文字を低くすることをコメントしたかっただけです。したがってCREATE DATABASE FOO、実際にはfoo。という名前のデータベースを作成します。「データベースが存在しない」理由を理解するのに5分ほどかかりました。参照:stackoverflow.com/questions/43111996/...
O-9

23

いくつかの回答が指摘しているように、createdbデータベースの作成に使用できるコマンドラインユーティリティです。

という名前のユーザーがいるとするとdbuser、次のコマンドを使用してデータベースを作成し、以下へのアクセスを提供できますdbuser

createdb -h localhost -p 5432 -U dbuser testdb

localhost正しいDBホスト名、5432正しいDBポート、およびtestdb作成するデータベース名に置き換えます。

これでpsql、この新しく作成されたデータベースに接続するために使用できます。

psql -h localhost -p 5432 -U dbuser -d testdb

createdbおよびpsqlバージョンでテスト済み9.4.15


これは、SSHで接続できないインスタンスにデータベースを作成する正しい方法でした。リモートpsqlユーティリティの
-cparamとして「CREATEDB

13

Postgresのデフォルト設定として、postgresというユーザーが作成され、ユーザーpostgresは、OSで実行されているPostgreSQLインスタンス全体への完全なスーパー管理者アクセス権を持ちます。

sudo -u postgres psql

上記のコマンドは、管理者モードでpsqlコマンドラインインターフェイスを取得します。

ユーザーの作成

sudo -u postgres createuser <username>

データベースの作成

 sudo -u postgres createdb <dbname>

注:<>は、コマンドの記述中には使用されません。変数を示すためにのみ使用されます。


2
PGPORT=5432
PGHOST="my.database.domain.com"
PGUSER="postgres"
PGDB="mydb"
createdb -h $PGHOST -p $PGPORT -U $PGUSER $PGDB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.