Linux および OS X での PSQL の使用
 
このページをシェアする                  
Linux および OS X での PSQL の使用
Linux および OS X で本製品を使った作業
以下のセクションは、サポートされている UNIX ベースのプラットフォームで動作する PSQL のユーザーを対象読者としています。
必要な情報の参照
Linux および OS X での PSQLのアカウント管理
設定
クライアント情報
Web ベースのデータベース アクセスの設定
PSQL における Perl および ODBC の使用
必要な情報の参照
ユーザー マニュアルへのアクセス
ドキュメントにアクセスする方法は?をご覧ください。
man page
man page は PSQL Server または Client のインストール時に一緒にインストールされます。man page を使用可能にするには $PVSW_ROOT/man/man1 ディレクトリを参照してください。
man page へ簡単にアクセスできるようにするには、MANPATH 環境変数に $PVSW_ROOT/man を追加します。ユーティリティやアプリケーションの詳細については、『PSQL User's Guide』のコマンド ライン インターフェイス ユーティリティを参照してください。
メモ: 最新情報については、man page を調べてください。本マニュアルの情報と man page の情報は一致するように最善の努力を尽くしています。しかし、本マニュアルの発行後に行われた最終変更が man page に含まれている場合があります。
Linux および OS X での PSQLのアカウント管理
ここでは、PSQL の操作で必要となる Linux および OS X ユーザー アカウントの情報について説明します。.bash シェルの使用を前提としていますが、他のシェルについても同様の手順が適用されます。
インストール後の動作
psql のユーザーにはパスワードがありません。su コマンドを使用することによって root アカウントでのみアクセスすることできます。
~psql/.bash_profile を使ってユーザー psql 用の .bash_profile にアクセスできます。
すべての PSQL ファイルのユーザー:グループ所有権を psql:pvsw に設定します。
PSQL エンジンの起動スクリプトおよび停止スクリプトを実行するには、root でログインする必要があります。
ユーザーの .bash_profile またはシステムの /etc/profile に必要な環境変数を追加した場合は、root 以外のユーザー アカウントでもユーティリティを実行することができます。psql 以外のユーザーからのユーティリティの使用を参照してください。
psql 以外のユーザーからのユーティリティの使用で説明されている手順に加え、root 以外のユーザーが以下のユーティリティで機能を実行するには、pvsw グループのメンバーになる必要があります。
PSQL Control Center(PCC):ローカル サーバーを管理する
License Administrator ユーティリティ(clilcadm):現在のライセンスの表示以外の機能を使用する
名前付きデータベース Maintenance ユーティリティ(dbmaint):現在のデータベースの表示以外の機能を使用する
PSQL サービス レジストリ エディター(psregedit):レジストリの表示以外の機能を使用する
コマンド ライン設定(bcfg)
ユーザー環境
インストールされているコンポーネントの場所は、環境変数 $PVSW_ROOT により判別されます。
設定ファイルの一般的な場所は $PVSW_ROOT/etc です。
実行可能ファイルの場合は $PVSW_ROOT/bin です。
共有ライブラリ(32 ビット)の場合は $PVSW_ROOT/lib、共有ライブラリ(64 ビット)の場合は $PVSW_ROOT/lib64 です。
パスの環境変数に $PVSW_ROOT/bin を追加することをお勧めします。
次のセクションで説明しているように、$PVSW_ROOT/lib64 を LD_LIBRARY_PATH(Linux の場合)または DYLD_LIBRARY_PATH(OS X の場合)に追加してください。
32 ビット Client Access パッケージを使用している場合は、$PVSW_ROOT/lib も LD_LIBRARY_PATH に追加する必要があります。OS X では、32 ビットのパッケージはサポートされていません。
psql 以外のユーザーからのユーティリティの使用
psql 以外のユーザー アカウントからユーティリティを使用するには、まずユーザー アカウントの設定を変更する必要があります。特定のユーザーのプロファイル、あるいは全ユーザーが継承する /etc プロファイルに、以下に示す例から行をコピーしてください。
/home/username/.bash_profile
/Users/username/.bash_profile
ユーザーのプロファイル。/etc/profile と似ていますが、現在のユーザーにのみ適用されるファイルです。
Linux では /home/username、OS X では /Users/username 内でこのファイルを探します。
/etc/profile
システム上の全ユーザー アカウント用のデフォルト プロファイル。全ユーザー アカウントに PSQL ユーティリティへのアクセスを許可するには、このプロファイルを使用します。
例に従ってこのプロファイルを変更しても、PSQL データへの管理権限やアクセス権は与えられません。
変更されたプロファイル例
PSQL に関連するすべての変数を必ずエクスポートするようにしてください。
Linux
PVSW_ROOT=/usr/local/psql
PATH=$PATH:$PVSW_ROOT/bin:/bin:/usr/bin
LD_LIBRARY_PATH=$PVSW_ROOT/lib64:$PVSW_ROOT/lib:$PVSW_ROOT/bin:/usr/lib
MANPATH=$MANPATH:$PVSW_ROOT/man
OS X
PVSW_ROOT=/usr/local/psql
PATH=$PATH:$PVSW_ROOT/bin:/bin:/usr/bin
DYLD_LIBRARY_PATH=$PVSW_ROOT/lib64:$PVSW_ROOT/lib:$PVSW_ROOT/bin:/usr/lib
MANPATH=$MANPATH:$PVSW_ROOT/man
設定
一般的に、PSQL Server と Client のデフォルト設定はそのまま使用しても問題はありません。通常、データベース エンジンとクライアントの通信や機能について設定を行う必要はありません。ここでは、変更を行う可能性のある 2 つの設定について説明します。
Samba 設定ファイル
認証(Authentication)
すべての設定を調査する場合は、『Advanced Operations Guide』の設定リファレンスを参照してください。
Samba 設定ファイル
PSQL Server は Samba の設定ファイル(smb.conf)のパスを定義します。パスはエンジンの起動時に解析され、共有名とサーバーのディレクトリの場所の間のマッピングが判別されます。『Advanced Operations Guide』の Configuration File(Linux および OS X エンジンのみ)を参照してください。
認証(Authentication)
このオプションは、サーバー エンジンへのアクセスに使用する認証のタイプを指定します。使用可能なオプションは次のとおりです。
Emulate Workgroup Engine。Samba を使用してシステムのユーザー アクセスを認証する場合は、この値を使用します。
Proprietary Authentication(using btpasswd)(専用認証(btpasswd の使用))。Samba を使用せず、ユーザーがサーバーにアカウントを持っていない場合は、この値を使用します。Linux または OS X システムへ接続する際に個別のパスワード ファイルを使用できます。
Linux または OS X サーバーで BTPASSWD または PAM 認証を使用している場合は、このサーバーに接続するクライアントから、pvnetpass ユーティリティを使用してユーザー名とパスワードを設定する必要があります。『PSQL User's Guide』の pvnetpass を参照してください。
Standard Linux Authentication(標準 Linux 認証)。Samba を使用せず、ユーザーが Linux または OS X システムにアカウントを持っている場合は、この値を使用します。
Samba 用にサポートされるパスの形式
Windows クライアント
Windows の PSQL Client からのパスの解析順序は次のようになります。
\\server\share\relative\path
share は、Windows クライアントにアクセスを許可された、有効な Samba 共有を表します。
server は、smb.conf を読み取って共有ディレクトリの絶対パスを判別し、それを相対パスと結合してフル パスを完成します。smb.conf の場所は、クライアントでこの形式で提供されるファイル パスの解決を有効にするために不可欠です。相対パスが間違っている場合、ステータス 12 が返されます。
Drive:\path
Drive は、Windows クライアントで割り当てられた Samba のドライブです。このドライブから、PSQL Client は Btrieve ファイルが存在するサーバーを決定します。
Linux または OS X クライアント
Linux または OS X の PSQL Client からのパスの解析順序は次のようになります。
//server/share/relative/path
share は、サーバー上の有効な Samba 共有名を示します。
サード パーティー製の Samba パッケージを使用するシステムでは、server は smb.conf を読み取って共有ディレクトリの絶対パスを判別し、それを相対パスと結合してフル パスを完成します。smb.conf の場所は、クライアントでこの形式で提供されるファイル パスの解決を有効にするために不可欠です。
smb.conf ではなくネイティブな SMB ファイル共有を使用する OS X システムでは、server はオペレーティング システムから直接、共有情報を解決します。
どの場合においても、相対パスが間違っている場合はエラー ステータスが返されます。
/Mount/path
Mount は、Linux または OS X でマウントされた Samba のドライブです。このドライブから、PSQL Client は Btrieve ファイルが存在するサーバーを決定します。
メモ: Linux サーバーのクライアントの共有名では大文字小文字が区別されます。サーバーとクライアントの共有名が完全に一致しないと、通信することができません。
Linux および OS X サーバーでは、PSQL エンジンは smb.conf と共有名のいずれも見つけられなかった場合、デフォルトの \\server\absolute_path(絶対パス)形式であると見なします。絶対パスが間違っている場合、ステータス 12 が返されます。
クライアント情報
クライアント コンピューターとサーバー コンピューターが共有プロトコルを使用して通信できれば、Linux または OS X 上の PSQL Client は、どの PSQL Server へも接続できます。
リモート マシンへの認証
Linux または OS X クライアントを使ってリモート マシンに接続するには、そのリモート マシンへの認証が必要です。認証を行うには、pvnetpass ユーティリティを使用して、サーバーの特定のユーザー名とパスワードを入力します。このユーティリティでは、クライアント マシン上の PSQL レジストリに、その特定のサーバーのユーザー名とパスワードを暗号化された形式で保存します。ユーザー名とパスワードを指定しない場合は、アプリケーションでステータス コード 3119 を受け取ります。
PSQL User's Guide』の pvnetpass を参照してください。
クライアント DSN の作成
クライアント上のアプリケーションが ODBC 経由で PSQL リレーショナル エンジンを使用する場合は、クライアントのデータ ソース名(DSN)が必要です。クライアント DSN を作成するには、PSQL Client に含まれている dsnadd ユーティリティを使用します。『PSQL User's Guide』の dsnadd を参照したり、/usr/local/psql/man/man1 にある man page で「dsnadd」を参照してください。
Web ベースのデータベース アクセスの設定
ここでは、Linux または OS X の Web アプリケーションから PSQL データにアクセスするための Web サーバーの構成方法、また、その PSQL データにアクセスするための接続用コードの抜粋やサンプル コードを提供します。
ODBC の動作
PSQL を最初にインストールしたとき、odbc.ini ファイル は /usr/local/psql/etc に書き込まれます。
unixODBC など他の ODBC ドライバー マネージャーがある場合、これらのドライバー マネージャーは /etc/odbc.ini といった別の場所にある odbc.ini ファイルを使用する可能性があります。
ODBC セットアップを統一するための方法として、次の例に示すように、unixODBC が odbc.ini ファイルがあると考える場所と PSQL ディレクトリとの間のソフト リンクを追加する方法があります。
su
cd /etc
ln -s /usr/local/psql/etc/odbc.ini
Web サーバーの構成
ここでは、Apache などの Web サーバーが搭載されているマシンを設定する方法について説明します。
Apache などの Web サーバーを起動するユーザー アカウントは、pvsw グループに属していなければなりません。これらのユーザー アカウントは nobody などの制限付きアカウントに基づいて実行します。
ユーザー アカウントを探す場合は Apache 構成ファイルを見てください。これは通常 /etc/httpd/conf/httpd.conf にあります。
このファイルの次の行は、Apache サーバーがどのようなユーザーの下で動作するかを示しています。
User nobody
Group nobody
Options ExecCgi Indexes
このユーザーを pvsw グループに追加し、お使いの Apache 構成ファイルで使用している名前に置き換えます。
/usr/bin/gpasswd -a nobody pvsw
PHP
PHP では、Microsoft の ASP や Java の JSP に類似したスタイルを使用して Web アプリケーションの開発を簡単に行うことができます。PHP の使用は HTML でデータベース呼び出しを特殊なタグで囲み、出力を書式設定します。
PSQL PHP の要件
PHP - http://www.php.net から入手します。
データベースを指す DSN(dsnadd を使用)
PHP の接続用コードの一部
このコード部分は PHP を使って PSQL データベースに接続する基本的な部分です。
// ユーザー ID、パスワードなしで DEMODATA データベースに接続する
$connect = odbc_connect("demodata", "", "");

// クエリ変数を SQL に設定する
$query = "SELECT * from Department";

// クエリの結果オブジェクトを取得する
$result = odbc_exec($connect, $query);
PHP の例
以下に示す完全なサンプル コードでは、ユーザーが DEMODATA の 3 つのテーブルから 1 つを選択し、そのテーブルを表示します。
<HTML>
<HEAD>
<TITLE>PVSW PHP の例</TITLE>
</HEAD>
<BODY>
 
<H1>PSQL Hello World のサンプル - PHP ODBC API を使用した PHP</H1>
<p>
このサンプル コードでは PHP を使用して下記のドロップダウン リストにある DEMODATA データベースのテーブルを表示します。
</p>
 
<?
 
// -------メイン メニュー----------------------
 
// URL 内に指定された機能がない場合
 
 
if (!(isset ($HTTP_GET_VARS["_function"]))):
 
// --------------------------------------------
 
?>
 
<p>以下のテーブルから選択してください。</p>
<form method=post action='<?=$PHP_SELF?>?_function=showtable'>
<select name="selecttable">
<option SELECTED value="Department">Department
<option value="Course">Course
<option value="Room">Room
</select>
 
<p>
<input type=submit value="テーブルの表示">
</p>
</form>
 
<?
 
// ------テーブルの表示------------------------
 
Elseif ($HTTP_GET_VARS["_function"] == "showtable"):
 
// --------------------------------------------
 
print("<p><a href='$PHP_SELF'>サンプル 1 メイン メニュー</a>に戻る</p>");
 
$thetable = $HTTP_POST_VARS["selecttable"];
// フォームのデータから開くテーブルを決定する
 
$connect = odbc_connect("demodata", "", "");
// ユーザー ID、パスワードなしで DEMODATA データベースに接続する
$query = "SELECT * from $thetable";
// 実行する SQL に含めるクエリ変数を設定する
$result = odbc_exec($connect, $query);
// クエリを実行する
 
// 結果セット全体を HTML テーブルとして出力する
//(以下の行のコメントを解除します)
// odbc_result_all($result);
 
// あるいは、出力を自分で独自に書式設定し、
// より見やすいテーブルを表示する(ただし、より多くのコード作成が必要)
 
// 行カウンターを初期化する
$i = 0;
 
// 列数を決定する
$numcols = odbc_num_fields($result);
 
// HTML テーブルを開始する
print("<table border=1 cellpadding=5>");
 
 
// 列見出しの印刷
 
  print("<tr>"); // 行の開始
 
  while ($i < $numcols)
     {
       $i++;
       $colname = odbc_field_name($result, $i);
       print("<th>$colname</th>");
     }
  $i=0;
 
print("</tr>");       // 行の終了
 
// テーブル データの出力
 
// 行が存在する限り実行
while(odbc_fetch_row($result))
  {
    print("<tr>");    // 行の開始
 
    while ($i < $numcols)
      {
        $i++;
        $tablecell = odbc_result($result, $i);
        print("<td>$tablecell</td>");
      }
 
      print("</tr>");      // 行の終了
      $i = 0;              // カウンターのリセット
 
  }                        // odbc フェッチ行の終了
print("</table>");         // HTML テーブルの終了
 
odbc_close($connect);      // 接続を閉じる
 
// テーブル表示の終了
 
// ---無効なメニュー オプションの取得-----------------
 
Else:
 
// ----------------------------------------------
 
print("<p>無効な機能が入力されました。<a href='$PHP_SELF'>再試行</a>してください。</p>");
 
 
Endif;
 
?>
</BODY>
</HTML>
PHP のその他の例
より一般的な PHP サンプル アプリケーションを弊社の Web サイトからオンラインで入手することができます。このアプリケーションではビデオ店の操作をシミュレートします。
このサンプルは PSQL SDK に含まれている Pvideo データベースを使用しています。SDK をインストールしていない場合は、サンプル アプリケーションと一緒にこの Pvideo データベースをダウンロードすることができます。
Perl
Perl は PSQL を使ったコマンド ラインおよび Web ベースのアプリケーションの両方に使用できます。
PSQL Perl の要件
Perl
ODBC-DBD ライブラリ
CGI ライブラリ
データベースを指す DSN
Perl の接続用コードの一部
このコード部分は Perl を使って PSQL データベースに接続する基本的な部分です。
# Perl のデータベース インターフェイス(DBI)の使用を指定する
use DBI;
 
# ユーザー ID、パスワードなしで DEMODATA データベースに接続する
$dbInfo = "DBI:ODBC:DEMODATA";
$dbUserName = "";
$dbPassword = "";
 
# クエリ変数を SQL に設定する
$query = "SELECT * FROM Department";
 
# サーバーへ接続する
$connect = DBI->connect($dbInfo, $dbUserName, $dbPassword);
 
# SQL クエリを準備する
$myRecordSet = $connect->prepare($query);
 
# クエリを実行してレコードセットを取得する
$myRecordSet->execute();
Perl の例
以下に示す完全なサンプル コードでは、ユーザーが DEMODATA の 3 つのテーブルから 1 つを選択し、そのテーブルを表示します。
# Perl の例
 
use CGI":cgi-lib";
$cgiquery = new CGI;
 
$functionreq = $cgiquery->url_param('_function');
# GET の場合は 'url_param' を、POST の場合は 'param' を使用する
 
print &PrintHeader;
print &HtmlTop("PSQL Hello World サンプル - Perl");
 
print <<ENDOFMENU;
<H1>PSQL Hello World サンプル - Perl</H1>
 
<P>
このサンプル コードでは Perl/DBI を使用して下記のドロップダウン リストにある DEMODATA データベースのテーブルを表示します。
</p>
ENDOFMENU
 
# -----メイン メニュー-------------------------------
 
# URL 内に指定された機能がない場合
 
if (!$functionreq) {
 
# ---------------------------------------------
 
print <<ENDOFTEXT;
 
<p>以下のテーブルから選択してください。</p>
<form method=post action="$ENV{'SCRIPT_NAME'}?_function=showtable">
<select name="selecttable">
<option SELECTED value="Department">Department
<option value="Course">Course
<option value="Room">Room
</select>
<p>
<input type=submit value="テーブルの表示">
</p>
</form>
 
ENDOFTEXT
 
} # !($function)
 
# ------テーブル表示-------------------------------
 
elsif ($functionreq eq "showtable") {
 
print("<p><a href='$ENV{'SCRIPT_NAME'}'>Perl Hello World サンプル - メイン メニュー</a>に戻る</p>");
 
 
# フォームのデータから開くテーブルを決定する
$thetable = $cgiquery->param('selecttable');
 
use DBI;
 
$dbInfo = "DBI:ODBC:DEMODATA";
$dbUserName = "";
$dbPassword = "";
 
$query = "SELECT * FROM $thetable";
$connect = DBI->connect($dbInfo, $dbUserName, $dbPassword);
 
$myRecordSet = $connect->prepare($query);
$myRecordSet->execute();
 
# HTML テーブルを開始する
print "<table border=1 cellpadding=5>";
 
# 列見出しの印刷
 
$num_fields = $myRecordSet->{NUM_OF_FIELDS};
$count = 0;
 
print "<tr >";
while ($count < $num_fields) {
  $column_name = $myRecordSet->{NAME}->[$count];
  print "<th>$column_name</th>";
  $count++;
}
print "</tr>\n";
 
$count = 0;
 
# テーブル データの出力
 
while(@row=$myRecordSet->fetchrow_array) {
  print "<tr>\n";
  while ($count < $num_fields) {
  print "<td>$row[$count]</td>\n";
  $count++;
  }
  print "</tr>\n";
  $count = 0;
}
 
print "</table>";            # HTML テーブルの終了
# テーブル表示の終了
}
 
# -----無効なメニュー オプションの取得----------------
 
else {
 
print "<p>無効な機能が入力されました。<a href='$ENV{'SCRIPT_NAME'}'>再試行</a>してください。</p>";
 
}
 
print &HtmlBot;
PSQL における Perl および ODBC の使用
メモ: この手順は、PSQL、Perl および ODBC ディストリビューションがインストールされていることを前提にしています。http://www.iODBC.orgで ODBC のフリー バージョンを入手することができます。Perl については http://www.perl.org をご覧ください。
PSQL を Perl の ODBC インターフェイスで動作させるには
1 Perl をサポートする DBI(データベース インターフェイス)をダウンロードします。
手順については、Readme ファイルまたは INSTALL ファイルを参照してください。
2 Perl 用の ODBC DBD データベース ドライバーをダウンロードします。
Readme または INSTALL ファイルでインストール手順を参照してください。
3 次の例で示すように、適切な環境変数を設定してください。これは iODBC のドキュメントでも説明されています。
Perl および DBI 用のコードの一部
print "using odbc...\n";
use DBI;
$dbName = "DBI:ODBC:DEMODATA";
$dbUserName = "";
$dbPassword = "";
print "connecting...\n";
$sql = "SELECT * FROM class";
$dbh = DBI->connect($dbName, $dbUserName, $dbPassword);
$dataObject = $dbh->prepare($sql);
$dataObject->execute();
while(@row=$dataObject->fetchrow_array)
{
print "$row[0]\t$row[1]\t$row[2]\n\n"
}