コマンドラインからデータベースを作成しようとしています。私のOSはcentosで、postgresのバージョンは10.9です。
sudo -u postgres psql createdb test
Password for user test:
なぜユーザーから私に尋ねるのですか?
コマンドラインからデータベースを作成しようとしています。私のOSはcentosで、postgresのバージョンは10.9です。
sudo -u postgres psql createdb test
Password for user test:
なぜユーザーから私に尋ねるのですか?
回答:
ユーザーを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;
create user testuser; create database testdb;
試してみてください:
sudo -u postgres psql -c 'create database test;'
sudo -u postgres psql -c 'grant all privileges on database test to username;'
createdb
は、psqlからではなくbashから実行できるコマンドラインユーティリティです。psqlからデータベースを作成するには、次のようにcreatedatabaseステートメントを使用します。
create database [databasename];
注:SQLステートメントは必ずで終了してください。 ;
;
CREATE DATABASE FOO
、実際にはfoo
。という名前のデータベースを作成します。「データベースが存在しない」理由を理解するのに5分ほどかかりました。参照:stackoverflow.com/questions/43111996/...
いくつかの回答が指摘しているように、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
。
Postgresのデフォルト設定として、postgresというユーザーが作成され、ユーザーpostgresは、OSで実行されているPostgreSQLインスタンス全体への完全なスーパー管理者アクセス権を持ちます。
sudo -u postgres psql
上記のコマンドは、管理者モードでpsqlコマンドラインインターフェイスを取得します。
ユーザーの作成
sudo -u postgres createuser <username>
データベースの作成
sudo -u postgres createdb <dbname>
注:<>は、コマンドの記述中には使用されません。変数を示すためにのみ使用されます。
PGPORT=5432
PGHOST="my.database.domain.com"
PGUSER="postgres"
PGDB="mydb"
createdb -h $PGHOST -p $PGPORT -U $PGUSER $PGDB