1.1インストール
言うまでもなく、PostgreSQLを使用する前にインストールする必要があります。PostgreSQLがオペレーティングシステムにプリインストールされているか、システム管理者がインストールしている場合は、オペレーティングシステムのドキュメントまたはシステム管理者からPostgreSQLへのアクセス方法に関する情報を入手する必要があります。
PostgreSQLがすでにインストールされているかどうか、またはインストールされているPostgreSQLが利用可能かどうかわからない場合は、自分でインストールできます。PostgreSQLのインストールは難しくありません。インストール自体は良い練習の機会です。PostgreSQLは非特権ユーザーがインストールでき、スーパーユーザー(root)のアクセス権は必要ありません。
PostgreSQLを自分でインストールする場合は、第15章のインストール手順を参照し、インストールが完了したらこの手順に戻ってください。必ず関連する環境変数を設定してください。
サーバーの管理者がデフォルトの方法ではなくPostgreSQLをインストールする場合は、追加の作業を行う必要があります。たとえば、データベースサーバーがリモートコンピューター上にある場合は、PGHOST環境変数をデータベースサーバーのコンピューター名に設定する必要があり、環境変数PGPORTも設定する必要がある場合があります。最も一般的なのは、アプリケーションを起動してもデータベースに接続できない場合は、すぐにシステム管理者に連絡する必要があります。管理者の場合は、ドキュメントを参照して、環境変数が正しく設定されていることを確認する必要があります。それでも上記の内容がわからない場合は、まず次のセクションをお読みください。
1.2システムの基本概念
まず、PostgreSQLシステムの基本的なアーキテクチャを理解する必要があります。PostgreSQLシステムのさまざまな部分の間の相互関係を理解すると、この章がより明確になります。
PostgreSQLは、クライアント/サーバー(C / S)モデルを使用してサービスを提供します。PostgreSQLセッションは、次の関連プロセス(プログラム)で構成されます。
(1)サーバー側のプロセス。このプロセスは、データベースファイルを管理し、データベースへのクライアント接続を受け入れ、クライアントに代わってデータベースで操作を実行します。このプロセスのプログラム名はpostgresと呼ばれます。
(2)フロントエンドアプリケーション、つまりデータベース操作を必要とするクライアントアプリケーション。クライアントアプリケーション自体は多様である可能性があります。それらは、文字インターフェイスツール、グラフィカルインターフェイスアプリケーション、データベースにアクセスしてWebページを表示するWebサーバー、または特別なデータベース管理ツールです。一部のクライアントアプリケーションはPostgreSQLリリースで提供されますが、それらのほとんどはユーザーによって開発されています。
一般的なクライアント/サーバーアプリケーション(C / Sアプリケーション)と同様に、クライアントとサーバーは異なるホスト上に置くことができます。この時点で、TCP / IPを介して接続されています。クライアントでアクセスできるファイルは、データベースサーバーマシンではアクセスできない可能性があるため(または別のファイル名でのみアクセスできるため)、この点に注意してください。 。
PostgreSQLサーバーは、クライアントからの複数の同時リクエストを処理できます。これを可能にするために、リクエストごとに新しいプロセスを開始(「フォーク」)します。その後、クライアントと新しいサーバープロセスは、元のpostgresプロセスを介して直接通信しません。したがって、サーバー側のメインプロセスは常に実行され、クライアントからの接続を待機します。一方、クライアントと関連するサーバー側プロセスは、必要な場合にのみ実行されます。(もちろん、これらはユーザーに対して透過的であり、完全を期すためにここで説明します。)
1.3データベースを作成する
データベースサーバーにアクセスできるかどうかをテストする最初の例は、データベースの作成を試みることです。PostgreSQLサーバーは複数のデータベースを管理できます。通常、プロジェクトごとおよびユーザーごとに個別のデータベースを使用します。
システム管理者がデータベースを作成し、データベースの名前を指定した可能性があります。この場合は、このステップをスキップして次のセクションにスキップできます
mydb(この例ではmydb)という名前の新しいデータベースを作成するには、次のコマンドを使用できます。
$ createdb mydb
コマンドの実行後に特別な情報が表示されない場合、コマンドは成功しているため、このセクションの残りの部分はスキップできます。
次のようなメッセージが表示された場合
createdb: command not found
その後、PostgreSQLが正しくインストールされません。まったくインストールされていないか、シェルの検索パス設定に含まれていません。絶対パスを使用してコマンドを呼び出してみてください。
$ /usr/local/pgsql/bin/createdb mydb
ノードのパスは異なる場合があります。正しい場所については、管理者に連絡するか、インストール手順を参照してください。
別の応答は次のようになります。
createdb: could not connect to database postgres: could not connect to server:
No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
これは、サーバーが起動しなかったか、createdbが予期した場所で起動しなかったことを意味します。同様に、インストール手順を確認するか、管理者を見つける必要があります。
別の応答は次のようになります。
createdb: could not connect to database postgres: FATAL: role "joe" does not exist
あなたのログインアカウントはここに記載されています。管理者があなたのためにPostgreSQLユーザーアカウントを作成しない場合、これらの現象が発生します。(PostgreSQLユーザーアカウントとオペレーティングシステムユーザーアカウントは異なります。)管理者の場合は、ユーザーアカウントの作成について第20章を参照してください。最初のユーザーアカウントを作成するには、PostgreSQL(通常はpostgres)をインストールしたオペレーティングシステムユーザーのIDに切り替える必要があります。与えられたPostgreSQLユーザー名がオペレーティングシステムのユーザー名と異なる可能性もあります。この場合、-Uスイッチを使用するか、PGUSER環境変数を使用してPostgreSQLユーザー名を宣言する必要があります。
データベースユーザーアカウントを持っているが、データベースの作成に必要な権限がない場合は、次のプロンプトが表示されます。
createdb: database creation failed: ERROR: permission denied to create database
すべてのユーザーが新しいデータベースの作成を許可されているわけではありません。PostgreSQLがデータベースの作成を拒否した場合は、ノード管理者にデータベースを作成する権限を付与するように依頼する必要があります。その場合は、ノード管理者にご相談ください。PostgreSQLを自分でインストールした場合は、データベースサーバーを起動したユーザーとしてログインし、マニュアルを参照して認証作業を完了する必要があります。[1]
他の名前でデータベースを作成することもできます。PostgreSQLでは、特定のノードに任意の数のデータベースを作成できます。データベース名は文字で始まり、63文字未満である必要があります。便利な方法は、現在のユーザー名と同じ名前でデータベースを作成することです。多くのツールは、データベース名がデフォルトのデータベース名であると想定しているため、キーストロークを保存できます。このようなデータベースを作成するには、次のように入力します
$ createdb
データベースを使用する必要がなくなった場合は、データベースを削除できます。たとえば、データベースmydbの所有者(作成者)である場合は、次のコマンドを使用してデータベースを削除できます。
$ dropdb mydb
(このコマンドの場合、データベース名はデフォルトのユーザー名ではないため、宣言する必要があります。)このアクションは、データベースに関連するすべてのファイルを物理的に削除し、キャンセルできないため、これを行う前に必ずこれを行ってください。
createdbとdropdbに関する情報は、createdbとdropdbの別々のセクションにそれぞれあります。
注意:
[1]この理由について:PostgreSQLユーザー名はオペレーティングシステムのユーザーアカウントとは別のものです。データベースに接続するときに、接続するPostgreSQLユーザー名を選択できます。選択しない場合、デフォルトは現在のオペレーティングシステムアカウントです。その場合、サーバーを起動するためのオペレーティングシステムユーザーと同じ名前のPostgreSQLユーザーアカウントが常に存在し、通常、このユーザーにはデータベースを作成する権限があります。このユーザーとしてログインしたくない場合は、任意の場所で-Uオプションを指定して、接続するPostgreSQLユーザー名を選択することもできます。
1.4データベースへのアクセス
データベースを作成したら、次の方法でデータベースにアクセスできます。
- PostgreSQLインタラクティブターミナルプログラムpsqlを実行します。これにより、SQLコマンドをインタラクティブに入力、編集、および実行できます。
- データベースを作成および管理するには、PgadminやODBCまたはJDBCをサポートするオフィススイートなどの既存のグラフィカルフロントエンドツールを使用します。このチュートリアルでは、この方法については説明していません。
- 複数の言語バインディングの1つを使用するクライアントアプリケーションを作成します。これらの可能性については、パートIVで詳しく説明します。
このチュートリアルの例を試すために、psqlを起動することをお勧めします。次のコマンドを入力して、mydbデータベースを起動できます。
$ psql mydb
データベース名を指定しない場合、デフォルトでユーザーアカウント名になります。前のセクションでcreatedbの使用方法をすでに知っています。
psqlには、次の情報が表示されます。
psql (9.1)
Type "help" for help.
mydb=>
最後の行も
mydb=#
このプロンプトは、あなたがデータベースのスーパーユーザーであることを意味します。この状況の原因として最も可能性が高いのは、PostgreSQLの独自のインストールです。スーパーユーザーであるということは、アクセス制御によって制限されていないことを意味します。このチュートリアルでは、スーパーユーザーであるかどうかは関係ありません。
psqlの起動時に問題が発生した場合は、前のセクションに戻ってください。createdbを診断する方法は、psqlを診断する方法と非常に似ています。前者が機能する場合、後者も機能するはずです。
psqlによって出力される最後の行はプロンプトです。これは、psqlがあなたをリッスンしていることを意味します。この時点で、psqlによって管理されている作業領域にSQLクエリステートメントを入力できます。次のコマンドを試してください。
mydb=> SELECT version();
version
-----------------------------------------------------------------------
PostgreSQL 9.1 on i586-pc-linux-gnu, compiled by GCC 2.96, 32-bit
(1 row)
mydb=> SELECT current_date;
date
------------
2002-08-31
(1 row)
mydb=> SELECT 2 + 2;
?column?
----------
4
(1 row)
psqlプログラムには、SQLコマンドではない内部コマンドがいくつかあります。それらはバックスラッシュ「\」で始まります。たとえば、次のコマンドを使用して、さまざまなPostgreSQLSQLコマンドのヘルプ構文を取得できます。
mydb=> \h
psqlを終了するには、次のように入力します
mydb=> \q
次に、psqlが終了し、シェルコマンドラインに戻ります。(内部コマンドの詳細を取得するには、psqlプロンプトで\?と入力します)。psqlの完全な機能は、psqlのドキュメントに記載されています。PostgreSQLが正しくインストールされている場合は、オペレーティングシステムのシェルプロンプトでman psqlと入力して、ドキュメントを読むこともできます。このドキュメントでは、これらの機能を明示的に使用することはしませんが、必要に応じて使用できます。