データベースを使いたくなったのでBSD LicenseのPostgreSQLを使ってみる。
インストール
以下のサイトを参考にzipからインストールする。(これ以上うまくまとめられないのでリンク先に一任)。
https://www.flyenginer.com/low/low_db/zip%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7postgresql12%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B.html
なお、環境変数PGDATAを設定しないと、pg_ctl startやpg_clt stopの度に -D My-DataDirectory の指定をしなければならず面倒なことになるので設定したほうがいい。
サーバー起動・停止
サーバー起動は以下:
pg_ctl start -l C:\PostgreSQL\My-LogDirectory\postgresql.log
サーバー停止は以下:
pg_ctl stop
サーバーを停止せずにプロンプトを切ってしまった場合など、pg_ctl startが聞かなくなることがある。そういう時はrestartする。
restartは以下:
pg_ctl -D "C:\PostgreSQL\My-DataDirectory" restart
上記、My-DataDirectoryは環境変数PGDATAに指定したものと同じ。
データベースを使えるようにするまで
postgresユーザで接続
>psql -U postgres
psqlコマンドを使って「postgres」ユーザーで接続する。
なお接続を切るには
\q
データベースのユーザをパスワード付きで作成
postgres=# CREATE USER myuser WITH PASSWORD 'secret';
ユーザが作成できたかどうか確認するためにユーザ一覧を表示するには
postgres=# SELECT usename FROM pg_user;
なおユーザー削除は
postgres=# DROP USER myuser;
データベースをユーザを指定して作成
postgres=# CREATE DATABASE mydatabase OWNER myuser;
なおパスワードはユーザーに指定するもので、データベースには指定しない(戸惑った)
データベースが作成できたかどうか確認するためデータベース一覧を表示するには
postgres=# \l
なおデータベースを削除するには
postgres=# DROP DATABASE mydatabase;
データベースのテーブルへアクセス権を付与
まずpostgresユーザーでの接続を切り、
postgres=# \q
ユーザー「myuser」でデータベース「mydatabase」へ接続
>psql -U myuser -d mydatabase
GRANT で「ALL PRIVILEGES」をすべてのテーブルへ付加
mydatabase=> GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myuser;
データベースへテーブルを作成
mydatabase=>CREATE TABLE mytable(
ID integer,
TITLE text,
AUTHOR text
);
使用例
mydatabase=> select * from mytable;