Mac+homebrew でPostgreSQL入門
はじめに
この記事は備忘録として書いています。
悪い点は忌憚なくご指摘いただけると幸いです。
環境
Homebrew 2.1.15
psql (PostgreSQL) 11.5
PostgreSQLのインストールが完了した後
まず以下のコマンドでデータベースの一覧を確認してみる。
$ psql -l
k$ psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+----------+---------+-------+-------------------
postgres | k | UTF8 | C | C |
template0 | k | UTF8 | C | C | =c/k +
| | | | | k=CTc/k
template1 | k | UTF8 | C | C | =c/k +
| | | | | k=CTc/k
(3 rows)
データベースはデフォルトでこのようになっている。
PostgreSQLがデフォルトで参照するデータベースクラスタの設定
vimコマンドで~/.bash_profileというファイルへ
$ vi ~/.bash_profile
以下を追加する
export PGDATA=/usr/local/var/postgres
データベースの作成
・psqldbというデータベースをpsqluserというロール名で作成する
$ createdb psqldb -O psqluser
$ psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-------------------
psqldb | psqluser | UTF8 | C | C |
postgres | k | UTF8 | C | C |
template0 | k | UTF8 | C | C | =c/k +
| | | | | k=CTc/k
template1 | k | UTF8 | C | C | =c/k +
| | | | | k=CTc/k
(3 rows)
psqldbというデーターベースにpsqluserというロールをオーナーとして入る
$ psql -U psqluser psqldb
// psqluser というロール名に postgres というパスワードを設定
psqldb=> alter role psqluser with password 'postgres';
ALTER ROLE
//ロール名の一覧を確認
paqldb=> \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
k | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
psqluser | | {}
paqluserにはなんの権限もない状態なので権限を付与する
psqldb=> ALTER ROLE psqluser WITH CREATEDB;
ERROR: permission denied
むむむ、エラーだ
一度kというユーザーとしてpsqldbに接続
$ psql -U k psqldb
psqldb=# ALTER ROLE psqluser WITH createdb;
ALTER ROLE
psqldb=# ALTER ROLE psqluser WITH createrole;
ALTER ROLE
psqldb=# ALTER ROLE psqluser WITH Superuser;
ALTER ROLE
psqldb=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+------------
k | Superuser, Create role, Create DB, Replication, Bypass RLS | {psqluser}
psqluser | Superuser, Create role, Create DB | {}
psqluser に無事権限を付与できた
よくあるエラー
k$ postgres -D /usr/local/var/postgres
2019-10-22 23:04:38.695 JST [14260] FATAL: lock file "postmaster.pid" already exists
2019-10-22 23:04:38.695 JST [14260] HINT: Is another postmaster (PID 13895) running in data directory "/usr/local/var/postgres"?
k$ postgres -D /usr/local/var/postgres
2019-10-22 23:04:38.695 JST [14260] FATAL: lock file "postmaster.pid" already exists
2019-10-22 23:04:38.695 JST [14260] HINT: Is another postmaster (PID 13895) running in data directory "/usr/local/var/postgres"?
正しく停止させないとpid情報が残ってしまう
以下を実行
rm /usr/local/var/postgres/postmaster.pid
2019-10-22 23:04:57.924 JST [14265] LOG: listening on IPv6 address "::1", port 5432
2019-10-22 23:04:57.924 JST [14265] LOG: listening on IPv4 address "127.0.0.1", port 5432
2019-10-22 23:04:57.926 JST [14265] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
2019-10-22 23:04:57.950 JST [14266] LOG: database system was interrupted; last known up at 2019-10-22 22:49:54 JST
2019-10-22 23:04:58.084 JST [14266] LOG: database system was not properly shut down; automatic recovery in progress
2019-10-22 23:04:58.087 JST [14266] LOG: redo starts at 0/167D3D0
2019-10-22 23:04:58.087 JST [14266] LOG: invalid record length at 0/167D4B0: wanted 24, got 0
2019-10-22 23:04:58.087 JST [14266] LOG: redo done at 0/167D478
2019-10-22 23:04:58.100 JST [14265] LOG: database system is ready to accept connections
$ postgres -D /usr/local/var/postgres
もう一度実行
こんなログが出れば完了
参考文献
https://qiita.com/yh2020/items/8be3087004d100fe752b
http://ponsuke-tarou.hatenablog.com/entry/2018/01/31/232012
https://codenote.net/mac/homebrew/3894.html
https://codenote.net/mac/homebrew/187.html
https://teratail.com/questions/112476
https://qiita.com/sibakenY/items/407b721ad1bd0975bd00
http://db-study.com/archives/121
Author And Source
この問題について(Mac+homebrew でPostgreSQL入門), 我々は、より多くの情報をここで見つけました https://qiita.com/a16111k/items/16e5a7c7bcabe6bc1659著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .