psql
PostgreSQLのフロントエンドpsqlについて.
psqlはPostgresSQLのフロントエンドである.無論,リモートマシンからアクセスしたりもできる.
apt-get install postgresql-clientそして
psql -lで,DB一覧を見る事ができる.
リモートマシンからアクセスするには,${PGDATA}/postgresql.confで
tcpip_socket = 1として,TCP/IPでのアクセスを許可する.そして,${PGDATA}/pg_hba.confで
host all 192.168.0.0 255.255.255.0 trust sameuserなどとする.
- host
- このレコードのタイプ.hostだとリモートホストに関する設定になる.
- all
- DB名
- 192.168.0.0
- IP
- 255.255.255.0
- ネットマスク
- 認証タイプ
- identとかpamとかあるが,なんだかうまくいかなかったので,trustにしてみた.
- sameuser
- ユーザのマッピング.sameuserだと,リモートのユーザ名がそのまま使われる?ここで細かな設定をしたければ,${PGDATA}/pg_ident.confでマッピングを記述して,そのマッピング名をここに書く.
psql -h ホスト名 -lなどとすると無事アクセスできた.
私の環境ではLAN内には私しかいないので問題ないのだが,前述のtrustだとパスワード認証がない.パスワード認証には,以下がある.
- password
- パスワードファイル,通信ともにパスワードは暗号化されない.
- md5
- パスワードファイル,通信ともにパスワードは暗号化される.バージョン7.2以前と非互換.
- crypt
- パスワードファイル,通信ともにパスワードは暗号化される.バージョン7.2以前と互換.
- pam
- pamによる認証.
host firstdb 192.168.1.1 255.255.255.0 cryptそんで,ユーザpostgresでパスワードを登録する.
~$ psql firstdb firstdb=# ALTER USER dbuser WITH PASSWORD 'hogefuga'; ALTER USER firstdb=# SELECT * FROM pg_shadow ; usename | usesysid | usecreatedb | usetrace | usesuper | usecatupd | passwd | valuntil ----------+----------+-------------+----------+----------+-----------+----------+---------- postgres | 1 | t | t | t | t | | dbuser | 100 | f | f | f | f | hogefuga | (2 rows)今回は既存のユーザのパスワード変更だったので,
ALTER USER ユーザ名 WITH PASSWORD パスワード;だったが,新規ユーザの場合は,
CREATE USER ユーザ名 WITH PASSWORD パスワード;である.で,pg_shadowはpg_userと並んでシステムテーブルというらしい.で,pg_userはpg_shadowのViewらしい.pg_userはDBの一般ユーザも見ることができるが,パスワードは****で表示される.
psql -U dbuser -h hostname firstdb Password: firstdb=> SELECT * FROM pg_user; usename | usesysid | usecreatedb | usetrace | usesuper | usecatupd | passwd | valuntil ----------+----------+-------------+----------+----------+-----------+----------+---------- postgres | 1 | t | t | t | t | ******** | dbuser | 100 | f | f | f | f | ******** | (2 rows)

