PostgreSQL ログイン、ロールの追加、DB作成
前回インストールした直後の続きから
1.PostgresSQLにログイン
今、"py"というユーザーでUbuntuにログインしており、そのままpsqlと打つと以下のエラーが出る。
"py"というロールは存在しないという。。
Postgresは、インストールと同時にpostgresというロール(ユーザー)が自動作成されます。
※ロールはDBにアクセス権などを付与する役割を持ち、postgresはスーパーユーザーといい全ての権限が与えられている。
なので、最初にpostgresユーザーに切り替える。
$ sudo su - postgres
これでPostgreSQLを動かせるようになった。
2.ロールの追加
今存在しているロール一覧は、\duコマンドで分かる。
testロールの作成
postgres=# CREATE ROLE test LOGIN CREATEDB PASSWORD 'test';
CREATE ROLE
[属性の説明]
https://www.postgresql.jp/document/9.3/html/role-attributes.html
3.DBの作成
postgres=# CREATE DATABASE test OWNER test;
\lコマンドでデータベース一覧が分かる。
PostgreSQLの終了は、\q
4.新しく作ったロールにログイン
$ psql --username=test --password --dbname=test
Password: パスワードを入力
psql: error: could not connect to server: FATAL: Peer authentication failed for user "test"
エラーが出ました。クライアント認証なる設定が必要とのことで、普段ログインしているユーザー名と同じものでないと上記エラーが出ます。
[pg_hba.confの編集]
$ sudo vim /etc/postgresql/13/main/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
peer → trust に変更する
[PostgreSQLの再起動]
$ sudo /etc/init.d/postgresql restart
* Restarting PostgreSQL 13 database server
これで新しいロールでログイン出来るようになった。