ITの隊長のブログ

ITの隊長のブログです。Pythonを使って仕事しています。最近は機械学習をさわりはじめたお(^ω^ = ^ω^)

macでpostgresqlを試す

スポンサードリンク

初めて使う

環境

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.11.6
BuildVersion:   15G1611

試す

$ brew install postgresql

文字コードをUTF8で初期化する(?)

$ initdb /usr/local/var/postgres -E utf8
$ postgres --version
postgres (PostgreSQL) 10.1

サーバ起動. あら? プロセスが常駐してターミナルを放してくれない...

$ postgres -D /usr/local/var/postgres

バックグラウンドで動かそうとした

$ nohup postgres -D /user/local/var/postgres &
...
[1]+ Exit 2

あら?

$ postgres -D /usr/local/var/postgres >postgres.log 2>&1 &

これはいけた

$ psql -l

確認できたっぽい

DBの配置箇所をexportしてあげる. .bash_profileに追記する

$ vim ~/.bash_profile
...
export PGDATA=/usr/local/var/postgres

pg_ctlというコマンドがあるらしい。サーバの起動と停止を行う。なるほど。バックグラウンドでやる必要なかったんだ。。。

さっき、起動したのは停止して、このコマンドを使う.

$ pkill -f postgress
$ pg_ctl -D /usr/local/pgsql/data -l /var/log/postgres start
pg_ctl: directory "/usr/local/pgsql/data" does not exist

おろ? 作る

$ mkdir -p /usr/local/pgsql/data
$ pg_ctl -D /usr/local/pgsql/data -l /var/log/postgres start
pg_ctl: directory "/usr/local/pgsql/data" is not a database cluster directory

おろろ?

調べたら初期化コマンドinitdbで起動するっぽい

? じゃあディレクトリを変更すればいい感じなのかな?

$ pg_ctl -D /usr/local/var/postgres -l /var/log/postgres start
waiting for server to start..../bin/sh: /var/log/postgres: Permission denied

ぐぬぬ

$ sudo pg_ctl -D /usr/local/var/postgres -l /var/log/postgres start
Password:
pg_ctl: cannot be run as root

ぬぬぬぬぬ. /var/log/以下でアクセスエラーやな

カレントディレクトリにログを吐くようにした.

$ pg_ctl -D /usr/local/var/postgres -l postgres.log start
waiting for server to start.... done
server started

よし. 起動した.

停止するなら、stopでいいらしい

$ pg_ctl stop

ユーザーの作成はこう.

$ createuser -P pg-user

で、psqlコマンドで作成したユーザーを確認する

$ psql -q -c'select * from pg_user' pg-user
psql: FATAL:  database "pg-user" does not exist

ほう?

さっき作成したDB名を指定しないとダメだった。。。なぜ?

$ psql -d postgres -c'select * from pg_user' `pg-user`

DB作成

$ createdb example-db -O pg-user

コマンドおおいな!

接続

$ psql -U ps-user -d example-db 

\dでテーブル一覧、\lでDB一覧

テーブル作成

=> create table example (
> key char(800) primary key,
> data1 int8
> );
CREATE TABLE

> \d
         List of relations
 Schema |  Name   | Type  |  Owner
--------+---------+-------+---------
 public | example | table | pg-user

> select * from example;
 key | data1
-----+-------
(0 rows)

> \d example
                  Table "public.example"
 Column |      Type      | Collation | Nullable | Default
--------+----------------+-----------+----------+---------
 key    | character(800) |           | not null |
 data1  | bigint         |           |          |
Indexes:
    "example_pkey" PRIMARY KEY, btree (key)

参考URL

qiita.com