PostgreSQL ログイン、ロールの追加、DB作成

前回インストールした直後の続きから

1.PostgresSQLにログイン

今、"py"というユーザーでUbuntuにログインしており、そのままpsqlと打つと以下のエラーが出る。

$ psql
psql: error: could not connect to server: FATAL: role "py" does not exist

"py"というロールは存在しないという。。

 

Postgresは、インストールと同時にpostgresというロール(ユーザー)が自動作成されます。

※ロールはDBにアクセス権などを付与する役割を持ち、postgresはスーパーユーザーといい全ての権限が与えられている。

なので、最初にpostgresユーザーに切り替える。

$ sudo su - postgres

 

これでPostgreSQLを動かせるようになった。

$ psql
psql (13.0 (Ubuntu 13.0-1.pgdg16.04+1))
Type "help" for help.

postgres=#

 

2.ロールの追加

今存在しているロール一覧は、\duコマンドで分かる。

f:id:zamdin:20201012223548p:plain

testロールの作成

postgres=# CREATE ROLE test LOGIN CREATEDB PASSWORD 'test';
CREATE ROLE

 

f:id:zamdin:20201012223630p:plain

[属性の説明]

https://www.postgresql.jp/document/9.3/html/role-attributes.html

 

3.DBの作成

postgres=# CREATE DATABASE test OWNER test;

\lコマンドでデータベース一覧が分かる。

f:id:zamdin:20201012224352p:plain

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

 

これで新しいロールでログイン出来るようになった。

$ psql --username=test --password --dbname=test
Password:
psql (13.0 (Ubuntu 13.0-1.pgdg16.04+1))
Type "help" for help.

test=>

/* -----codeの行番号----- */