brew install
起動(電源切った時)
postgres -D /usr/local/var/postgres
db作成(ターミナル上)
createdb drugdb
ユーザー作成(ターミナル上)
createuser drug_user
dbに接続
psql -U drug_user drugdb
create schema drug_user;
ERROR: permission denied for database drugdb
→スキーマを作成するにはコマンドを実行するロールがスーパーユーザーか、
スキーマを作成するデータベースで CREATE 権限を持っている必要がある。
PostgreSQLのロール:
ユーザやグループがデータベースへアクセスすることを管理するための仕組み。
ロールには名前が付けられ、データベース・オブジェクト(テーブルや関数など)を所有し、
他のロールからのアクセスを制限する権限を持つ。
オペレーティング・システムのユーザとは完全に独立したもの。
最初にPostgreSQLが立ち上がるとpostgresという名前のロールが作成されている。
このロールは何でもできるスーパーユーザ。
それで、postgresという名前のロールから他のロールに与える権限の管理が始まる。
例えば、postgresが作成したデータベースに別のロール:Aがアクセスしようとすると、データベースへのアクセスは拒否される。
しかし、データベースを作成して所有者となったpostgresからアクセス権限がAに与えられると、Aはデータベースへのアクセスが可能になる。
権限を与えるなら、
ALTER ROLE 名前 LOGIN;
スーパーユーザー権限を与えるなら、
ALTER ROLE 名前 SUPERUSER;
(その時点でのスーパーユーザーから権限を与える必要があるため、
スーパーユーザーにログインし直さないと、
must be superuser to alter superusersが出る。)