Raspberry Pi 2でサーバ作ってみる(14) 〜PostgreSQLの初期設定〜

インストールができのでとりあえず実行してみる。

#rootで実行してみる。
/usr/local/pgsql/bin/pg_ctl start

するとエラーが。

pg_ctl: no database directory specified and environment variable PGDATA unset
Try "pg_ctl --help" for more information.

うん、やっぱり環境設定が必要。
インストール後の設定作業
ここを元に、postgresユーザの作成を行う。

#postgresユーザ追加
useradd -r -g postgres postgres

あれ?インストール後に作ってpermissionとか大丈夫かな?

初期設定として、initdbでデータベースクラスタというのを作成するらしい。

#initdb(rootで実行)
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

とりあえずrootのまま実行してみると、

initdb: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.

こんなエラーが。rootでは実行できないらしい。
さっき作ったpostgresユーザで実行。

#initdb(postgresユーザで実行)
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

で、またエラー。

creating directory /usr/local/pgsql/data ... initdb: could not create directory "/usr/local/pgsql/data": Permission denied

あ、rootでディレクトリ作ってた。ので、postgresに所有権を与える

#initdb(rootで実行)
chown -P postgres /usr/local/pgsql/data

実行すると、できたっぽい。
ロケールや言語が英語って大丈夫かな。

なんかWARNINGが出てる。

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success出てるし、この辺はいずれ確認しよう。
postgresを起動してみる。

#データディレクトリを指定して起動。
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ start

環境変数PGDATAを定義しておけば-Dオプションは不要。

LOG:  could not create IPv6 socket: Address family not supported by protocol
LOG:  database system was shut down at 2015-09-27 16:55:41 JST
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

みたいなのが出て止まった…じゃなくてバックグラウンドに移行したのか。
IPv6の設定はどこかで要確認です。
っていうことで別のターミナルから接続して、接続テスト。

#ユーザpostgresで接続
/usr/local/pgsql/bin/psql --username=postgres

つながった!

;(function(document){ var pres = document.getElementsByTagName("pre") for(var i=pres.length; i--; ){  var el = makeOl(pres[i]) pres[i].appendChild(el) } function makeOl(pre){ if (pre.className.indexOf("gist") !== -1) { return } var ol = document.createElement("ol") , li = document.createElement("li") , df = document.createDocumentFragment() , br = pre.innerHTML.match(/\n/g) || 0 ol.className = "preLine" ol.setAttribute("role", "presentation") // no lang, no line-number if( pre.className && ! /lang-./.test(pre.className) ){ br.length += 1 } for(var i=br.length; i--; ){ var li2 = li.cloneNode(true) df.appendChild(li2) } ol.appendChild(df) return ol } })(document)