Innovating@Sun コミュニティ ご購入について (0120-33-9096) マイ・アカウント 日本 [Change] 日本語

Feed Feed RSS 1.0 Feed RSS 2.0 Feed ATOM 1.0
データベース完結編 これを忘れちゃいませんか?OpenSolarisにPostgreSQL8.3を導入

ロケット稼働したトグレ・サーバとクライアント。あとはPostgreSQLの文法どおりにテーブル作ってデータ入れてという作業を好きに行えばよい。でもそれについてはPostgreSQLのドキュメントを読んでチョ。日本のPostgreSQL情報は「日本PostgreSQLユーザ会」から得られる。なお、日本PostgreSQLユーザ会自身のロゴはカメさんでカワイイ。本家ロゴの象さんとは「寿命が長くて落ち着いていて賢い動物」という意味で共通している。

それはそうとして、OpenSolarisでPostgreSQLがどのようなしくみで動くかは見ておいたほうがいいだろう。

本道場でも何度かOpenSolarisの「SMF(Service Management Facility)」というサービス管理方法を利用しているが、PostgreSQLもソレだ。

「簡単セットアップでひと安心」編でPostgreSQL8.3のサービスを起動したとき(実行例1)には、簡単さをより強力に表現するためにいきなり「アンダースコア」や「コロン」などの記号も鮮やかに、その名を指定してみせた。でもホントは「おまえの次のセリフはpostgresql_83:default....」などと見抜いておったわけでは全然なくて、せっせと調べたからこそのことだ。

どうやって調べたか。「サービス」の設定ファイルは、「/var/svc/manifest」というフォルダに、カテゴリ別に分けて置かれている。PostgreSQL8.3の設定ファイルは、リスト1の場所だ。

リスト1のような複雑な場所をファイルブラウザで見るためには、ファイルブラウザの上方で、exportとかhomeとかいうフォルダの切り替えボタンのついたところ(「場所バー」というんダショバー)の横っちょにある、あまりよく消えなそうな消しゴムのついた鉛筆ボタンを押す。これで、場所を直接入力できる形式になる。

図4:「場所バー」での場所指定方法を切り替えるバー
図4:「場所バー」での場所指定方法を切り替えるバー

図5:「mysql.xml」と一緒に「postgresql_83.xml」というファイルがある
図5:「mysql.xml」と一緒に「postgresql_83.xml」というファイルがある

図5のように見える設定ファイルのファイル名が「ほぼ」サービス名と考えてよい。あとは、「svcs」コマンドでサービス名を指定すると、より細かい分類のサービス名がある場合は、教えてくれる。図6は、svcsコマンドの応答の中に「:default_32bit(64bit)」という細かいサービス名が表示されたところだ。

図6:「svcs」コマンドでオプションを「postgresql_83」とさえ指定すれば、あとの細かいサービス名は応答で表示してもらえる
図6:「svcs」コマンドでオプションを「postgresql_83」とさえ指定すれば、
あとの細かいサービス名は応答で表示してもらえる
≫ クリックで拡大

図5の「postgresql_83.xml」は一般ユーザでは書き込み禁止だが、読むだけはできるのでテキストエディタなんかで開いちゃえばいい。必要な情報は全部そこに書いてある。

図7:postgresql_83.xmlの中身。テキストエディタで開くだけなら自由
図7:postgresql_83.xmlの中身。テキストエディタで開くだけなら自由

何がどの情報かそれほど正確にわからなくても、「実行ファイル」だったら「/usr/bin」もしくは「/usr/ナントか/bin」フォルダにあるんだろうと目星をつけて設定ファイルの内容を探すと、「/usr/postgres/8.3/bin」という記述が見つかる。これが「psql」も含むPostgreSQL8.3の実行ファイルの置き場所だ。

データファイルのように使用するたびに書き換えられるファイルは「var」フォルダに入っていることが多い。と思って設定ファイルを探すと、「/var/postgres/8.3/data」という記述が見つかる。
ファイルブラウザで「/var/postgres/8.3」に行ってみると、「data」や「data_64」というフォルダがちゃんとある。後者は64bit版のデータのフォルダだ。

図8:ちゃんとできているデータフォルダ
図8:ちゃんとできているデータフォルダ

このデータフォルダの「プロパティ」を見ると、所有者はちゃんと「postgres」に指定されている。

図9:所有者がpostgresになっている
図9:所有者がpostgresになっている

PostgreSQLでは、全ての権力を握るrootユーザがデータベースを扱うと危険すぎるので、専門のユーザ「postgres」を管理ユーザとして使うように強く奨励っていうか「データベース操作はrootではダメゼッタイ」と言われちゃう。
一般ユーザからpostgresになるには、一度「su」コマンドでrootに成り上がったのち、「su postgres」で成り下がるのが手っ取り早い。なにせrootだから偉いんだから、たとえpostgresにパスワードがあったとしても入力不要の顔パスだ。と思ったら図10。オンヤー?

図10:アクセス権には問題ないはずの「成り下がりワザ」だが、「No shell」というエラーでpostgresになれない(「solmac」は実行中のホスト名)
図10:アクセス権には問題ないはずの「成り下がりワザ」だが、
「No shell」というエラーでpostgresになれない(「solmac」は実行中のホスト名)

「No shell」というエラーで、postgresになれない。これは一体どうしたことだーッ。

OpenSolarisには、ユーザの情報を「見る」いい方法がある。デスクトップの上にある「システム」メニューで「システム管理」さらに「ユーザとグループ」を見つけて選択する。

図11:「ユーザとグループ」を起動
図11:「ユーザとグループ」を起動

「ユーザとグループ」のウィンドウは図12のようなものだ。
postgresユーザは「全てのユーザとグループを表示する」にチェックを入れて引っ張り出す。

図12:「全てのユーザとグループを表示する」にチェック
図12:「全てのユーザとグループを表示する」にチェック

postgresユーザの「プロパティ」を調べると、「ログインシェル」が「/usr/bin/pfksh」になっている。

図13:ログインシェルが「/usr/bin/pfksh」になっている
図13:ログインシェルが「/usr/bin/pfksh」になっている

この「pfksh」てヤツがOpenSolarisにないのが問題なのだ。ちなみにSolaris10では、ちゃんとある。

図14:Solaris10には「pfksh」があるのに
図14:Solaris10には「pfksh」があるのに

「簡単セットアップでひと安心」編で、PostgreSQLに追加した「noniko」は実は役割(ロール)だと述べたが、最近のSolarisやOpenSolarisでも同様のことがある。

「postgres」は姓はポス山名はグレ夫、獅子座のB型で浜松出身、好きな食べ物は焼きビーフンで、Firefoxでエヘヘなページを見たりOpenofficeで報告書を書いたりというような「現実の操作者」ではない。だが、そういう操作者は確かにいる。だからシステム上には「普通のユーザ」と「役割」の二種類に名前がつけられる。
「役割(role)」には、ナニをするためのもので、どんな操作ができて、どのファイルにアクセスできるという「profile(プロファイル)」が与えられている。現実のユーザにroleが割り当てられるとそうした「プロファイル」も与えられる(詳細はサンのドキュメント)。

そんな役割postgresが使うという「pfksh」の「pf」は、プロファイルのプにプロファイルのフ。ユーザに「プロファイル」として与えられた詳しい権限に基づいてコマンドを実行できるように取り計らってくれるシェルのことだというのだ。 でもココにないものはしょうがない。無責任にいじるのもよろしくないので、OpenSolarisのバージョンアップを待つことにする。



   ないのが問題:他に、そのユーザのホームディレクトリにアクセス権がないなどの問題で、「No Shell」と言われることもある。でも今の場合ログインシェルを/usr/bin/kshなど「フツーのシェル」に変更してやればエラーはなくなるので、やっぱり「ないのが問題」と考えていいだろう。
   というような:「焼きビーフンで」までは参考にならない。
   取り計らってくれる:詳しくはこちら
   いじる:さしあたってのエラー回避方法は、Bugzillaosdir.com/mail archiveなどに議論されているのでチャレンジしたい方はドゾ。

本記事は、サンのユーザ様自らの体験をお寄せいただいたものであり、サン・マイクロシステムズ社としての公式情報ではありません。

ご意見・ご感想をお聞かせください
この記事は参考になりましたか?
     

コメントがございましたらご記入ください


ページ先頭へ

Sun Fun Times