2011年12月13日火曜日

Linux Mint(PostgreSQLを使う)

Mint 12(Lisa) でPosgreSQLを使ってみました。
Lisa より 標準で, 9.1 をサポートしたようです。(コントリビューターの皆様感謝です)

以前, 11 で, Open SCGパッケージを使って入れましたが, その必要はもうなし。


1.  インストール
Synaptic パッケージマネージャで検索できます。

postgre(supported version) マークのついたやつをインストール
以下のパッケージがインストールされます

postgresql-9.1
postgresql-client9.1
postgresql-client-common
postgresql-common



2. サービスのチェック
サービス名は  postgresql  です

chkconfig を使います (  sudo apt-get install chkconfg でインストールできます)

chkconfig postgresql
postgresql on

※ どうやらインストール後すでにデーモン化されている模様

サービスのファイルは /etc/init.d/postgresql
start, stop, status などが使えます

>  /etc/init.d/postgresql status
Running clusters: 9.1/main

※というわけでどうやらすでに initdb を実行し, データベースクラスタはできているようです



3.  インストールディレクトリをチェック

> echo $PGDATA

といきごんでやっても出てきませんでした

/var/lib/postgresql/9.1/main    の中におもなファイルがあります
ただし, こいつの権限は

> ls -l

drwx------ 13 postgres postgres 4096 2011-12-13 20:38 main

オーナーが postgres で 700  Mint の通常ユーザではアクセス不可です。

> su -

でスーパーユーザーになって中身を見ていきましょう

/var/lib/postgresql/9.1/main/base

これがデータベースクラスタです。 この中の 数字がついたディレクトリが各データベースのディレクトリになります。

4.  設定ファイル

PostgreSQLの設定ファイルは, /etc/postgresql/9.1/main の中にあります。

pg_hba.conf            :   Host Base Access
postgresql.conf        :  Configuration File


5.   アクセステスト

インストールした状態では, postgres というユーザがデータベースクラスタに作られた状態です。
現在の Mint ユーザおよびrootユーザではアクセスできません。

※ OSユーザと PostgreSQLのユーザは違います(MySQLでも同じですよね)
しかし,  -U オプションを省略すると, OSユーザと同じ名前でアクセスしようとします。

> psql -U postgres

でいけると思いきやダメでした。 OSユーザと何かしら関係するみたいです。
ですので,

> su -
> su postgres

これで, postgres というユーザになりましょう(ここではOSのユーザです)

Mint (Mint とは限らないですが)  では, インストール時に /var/lib/postgresql
を ホームとする, ユーザ postgres が作成されます postgres は, デフォルトのSUPERUSERで PostgreSQLのすべての権限をもちます


6.  Mint ユーザで接続したい

やっぱり, postgres ではなくて, 最初に作ったMint ユーザで接続したい
そんなあなた(私もです)

> createrole -P  <mintのユーザ名>  権限にまつわるオプション

ex) 私の環境(CREATEDB権限だけで十分)
createrole -P mint -dl

対話型でスーパーユーザの権限やパスワードを聞かれます。
Mint のOSユーザと, PostgreSQLのユーザを一致させると, ちょっとだけ便利です。

※個人的には, CREATEDB 権限もしくは LOGIN権限だけを与えておけば, Webアプリの
開発, 運用はいいと思います。

ターミナルを再度開きなおして,

> psql postgres
postgres=#

と打つと, postgres というデータベースに接続します(postgres=# というのが, PostgreSQLのプロンプトになります

!注意
psql コマンドは, データベース名を省略すると, ユーザと同じ名前のデータベースへの接続を試みます。 私の場合 mint というデータベースにつなぎにいきます。 ないのでエラーですが,
postgresというデータベースは初期状態で存在します。

ユーザは PostgreSQLのプロンプトで \du  とうつと, 権限とともに, 一覧が表示されます



7.  コマンド

コマンドはどこのディレクトリ?

> whereis psql
/usr/bin/psql  /usr/share/man/man1/sql.1.gz

/usr/bin にシンボリックリンクが貼られいているようです。 
ほか, pg_ctl, createdb, createuser なども同じです。

8.  Mint ユーザでデータベースを作って接続

> createdb test
> psql test
test=#

createdbコマンドでtest というデータベースをつくって, それに接続します

コマンドとか, 運用などのまとめを書きたいな。





















0 件のコメント:

コメントを投稿