GNU/Linux >> Linux の 問題 >  >> Panels >> Webmin

PostgreSQLデータベースサーバー

このページでは、PostgreSQLデータベースサーバーについて説明します。 、およびWebminを使用してテーブル、ユーザー、グループ、およびデータを管理する方法について説明します。

コンテンツ

PostgreSQLの概要

MySQLデータベースサーバーと同様に、PostgreSQLは複数のデータベースとテーブルをサポートする無料のデータベースサーバーであり、クライアントがSQLでそれらをクエリできるようにします。これは、データベースを使用して情報を格納する必要があるアプリケーションを作成するプログラマーにとって最も役立ちます。 Perl、C、Java、PHPなどの一般的な言語にはすべて、PostgreSQLデータベースにアクセスするためのAPIがあります。

PostgreSQLサーバーは複数のデータベースをホストでき、各データベースには複数のテーブルを含めることができます。次に、テーブルにはフィールドが含まれ、各フィールドにはタイプとサイズがあります。テーブルにはレコードが含まれ、各レコードには通常、人、製品、購入などのオブジェクトに関する情報が含まれています。フィールドはテーブルの列と考えることができ、データの実際のレコードは行と考えることができます。一部のフィールドには、配列などの複数の値を含めることもできます。

SQL(Structured Query Languageの略)は、データベースからデータを抽出したり、データベース内のデータを更新したりするための言語です。ほとんどすべてのデータベースはSQLを使用しており、その構文は、Oracle、PostgreSQL、MySQLなどのすべての異なるデータベースパッケージで一般的に同じです。ただし、その構文はこの章ではカバーされていません。

PostgreSQLのパッケージには多くのLinuxディストリビューションが付属しており、コンパイルして、ほぼすべての種類のUnixにインストールできます。その動作はすべてのオペレーティングシステムで同じであるため、それを管理するためのWebminモジュールも同じです。

PostgreSQLは、実際のデータベースファイルを読み書きするサーバープロセスと、サーバーと通信する一連のクライアントプログラムで構成されています。最も一般的に使用されるのはpsqlコマンドです。これにより、ユーザーはSQLクエリを実行して結果を表示できます。どのクライアントもデータベースファイルに直接アクセスすることはありません。これは完全にサーバーに任されています。

すべてのPostgreSQLデータベースファイルは、/ var / lib/pgsqlや/usr/ local/pgsqlなどのディレクトリに保存されます。同様に、サーバーとクライアントの操作に影響を与えるいくつかのテキスト構成ファイルがあります。最も重要なのはpg_hba.confです。これは、サーバーへの接続が許可されているクライアントホストを一覧表示します。これは、Webminが直接編集する唯一のファイルです。他のすべてのデータベース構成は、直接またはpsqlコマンドを介してデータベースサーバーに接続することによって行われます。

PostgreSQLデータベースサーバーモジュール

このモジュールを使用すると、管理者はPostgreSQLサーバーのデータベース、テーブル、フィールド、およびレコードを管理できます。多くの点で、MySQLデータベースサーバーモジュールと非常によく似ています。 Webminの[サーバー]カテゴリにあるアイコンをクリックすると、メインページに、次のスクリーンショットに示すように、システム上の既存のデータベースのリストが表示されます。


PostgreSQLモジュールのメインページ

WebminがPostgreSQLがインストールされていない、初期化されていない、または接続できないことを検出した場合、上の画像に示すようにメインページは表示されません。代わりに、ある種のエラーメッセージが表示されます。最も一般的なものについては、次の数段落で説明します。

「PostgreSQLがシステムで実行されていません」というメッセージが表示された場合は、このモジュールを使用してデータベースサーバーを管理する前に、データベースサーバーを起動する必要があります。 PostgreSQLサーバーの起動をクリックするだけです ページ下部のボタン。これから起動時に開始する場合は、起動とシャットダウンモジュール(起動とシャットダウンで説明)を使用して、起動するための新しいアクションを作成します。ほとんどのLinuxディストリビューションでは、PostgreSQLパッケージには、デフォルトで有効になっていないpostgresまたはpostgresqlと呼ばれる起動アクションスクリプトが含まれています。

PostgreSQLがWebminによって実行されている場合、それに接続するために必要な管理ユーザー名とパスワードがわからないため、メインページに*PostgreSQLログイン*フォームが表示されます。データベースサーバーの有効なログイン詳細を入力する必要があります。通常は、すべてのデータベースと機能に完全にアクセスできるpostgresユーザーの場合です。他の権限の少ないユーザーとしてログインすると、最初は機能する可能性がありますが、モジュールのすべての機能を使用することはできません。 PostgreSQLは、個別のログインとパスワード(ID認証モード)ではなく、Unixユーザー名でユーザーを認証するように設定されている場合があります。これがシステムに当てはまる場合は、同じUnixユーザーとして接続しますか?を確認する必要があります。 フォーム上のボックス。

PostgreSQLホスト構成ファイルhba.confのようなエラーメッセージの場合 が見つかりませんでしたが表示される場合は、モジュールの構成が正しくないか、サーバーがまだ初めて初期化されていません。 Linuxシステムの多くのパッケージバージョンは、通常はinitdbコマンドを実行して、使用する前に初期化する必要があります。モジュールがシステムでこれを行う方法を知っている場合は、データベースの初期化 初めてサーバーをセットアップするためにクリックできるボタンが表示されます。

エラーメッセージPostgreSQLクライアントプログラム*psqlがシステムに見つかりませんでした*は、PostgreSQLがまったくインストールされていないか、Webminが期待するディレクトリとは異なるディレクトリにあることを示しています。 LinuxおよびFreeBSDシステムでは、モジュールは、ディストリビューションに含まれているデータベースのパッケージがインストールされていることを前提としていますが、他のオペレーティングシステムでは、ソースコードから/ usr / local/pgsqlへの標準インストールが行われていることを前提としています。インストールしてもエラーメッセージが表示される場合は、モジュールが使用するパスを調整する方法の詳細について、「PostgreSQLデータベースサーバーモジュールの構成」セクションを読む必要があります。

Linuxを実行していて、PostgreSQLがインストールされていない場合は、ソフトウェアパッケージモジュールを使用して、配布CDまたはWebサイトからpostgresで始まるすべてのパッケージをインストールします。多くの場合、postgresql、postgresql-server、postgresql-develなどのいくつかがあります。その他のオペレーティングシステムについては、http://www.postgresql.org/にアクセスしてソースコードディストリビューションをダウンロードし、コンパイルしてインストールしてください。

PostgreSQLモジュールは、SQLコマンドを使用して、テーブルの作成、フィールドの追加、レコードの編集などのアクションを実行します。これらのコマンドを実行するには、Webminはデータベースサーバーに接続する必要があります。これは、2つの方法のいずれかで実行できます。正しいパラメーターを指定してpsqlコマンドを実行し、その出力を解析するか、PerlDBIライブラリーを使用して直接接続することができます。

psqlコマンドはデータベースサーバーがインストールされているときに常にインストールされるため、前者の方法は常に使用可能です。ただし、特定の種類のテーブルデータは、常に解析できるとは限らない出力を生成するため、完全に信頼できるわけではありません。このため、DBIおよびDBD ::PgPerlモジュールをインストールする必要があります。いずれかが欠落している場合は、メインページの下部にメッセージが表示され、リンクをクリックして一方または両方をインストールするように求められます。これにより、Perlモジュールモジュールのページが表示され、DBIやDBD::Pgがダウンロードおよびインストールされます。

新しいデータベースの作成

PostgreSQLが最初にインストールされると、通常、template1というデータベースが作成されます。これは新しいデータベースのテンプレートとして使用されるため、データを保存するアプリケーションのテーブルを含む独自のデータベースを作成する必要があります。これを行う手順は次のとおりです。

  1. モジュールのメインページで、既存のデータベースアイコンの表の上または下にある[*新しいデータベースリンクを作成する*]をクリックします。
  2. データベース名に一意の名前を入力します 分野。これは、文字、数字、および_文字のみで構成する必要があります。
  3. データベースファイルパスの場合 フィールドはデフォルトに設定されています 、データベースのデータを実際に含むファイルは、デフォルトのディレクトリに作成されます。 Linuxシステムでは、これは通常/ var / lib / pgsql / dataのようなものになります。他のオペレーティングシステムでは、おそらく/ usr / local / pgsql/varになります。別のディレクトリを使用するには、Unixユーザーとしてデータベースを実行します(通常はpostgres)。最初にmkdirコマンドを使用してデータベースを作成し、次にディレクトリ名をパラメータとしてinitlocationを実行します。次に、データベースファイルパスのセクションラジオボタンを選択します フィールドに入力し、隣接するテキストボックスにディレクトリを入力します。残念ながら、PostgreSQLが絶対データディレクトリパスをサポートするようにコンパイルされていない限り、作成をクリックするとエラーが発生します。 ボタン。デフォルトでは、この機能は有効になっていません。
  4. 作成をクリックします ボタン。データベースが追加され、モジュールのメインページに戻ります。このページには新しいアイコンが含まれているはずです。 template1というデータベースがサーバーに存在する場合、それに含まれるテーブルまたはその他のオブジェクトは、新しく作成されたデータベースにコピーされます。これは、同様の構造を持つ多くのデータベースを追加する場合に役立ちます。

新しいテーブルの作成

テーブルはいつでも既存のデータベースに追加できます。各テーブルには1つ以上のフィールドがあり、各フィールドにはタイプ、サイズ、およびその他の属性があります。テーブルを追加するには、次の手順に従います。

  1. メインページで、テーブルを追加するデータベースのアイコンをクリックします。これにより、以下のスクリーンショーに示されているデータベース編集ページに移動します。このページには、既存の各テーブルのアイコンがあります。
  2. 新しいテーブルに含めるフィールドの数をフィールドに入力します 新しいテーブルの作成の横にあるテキストボックス ボタンをクリックし、ボタンをクリックします。これにより、新しいテーブルとその初期フィールドの詳細を入力するためのフォームが表示されます。
  3. テーブルの名前を選択し、テーブル名に入力します 分野。名前はデータベース内で一意である必要があり、文字、数字、および_文字のみを使用する必要があります。
  4. 初期フィールドの各行 tableは、新しいテーブルに追加されるフィールドを定義します。追加されるフィールドの種類は、次の各列の下の行に入力する内容によって異なります。
    • フィールド名 このフィールドの名前。テーブル内で一意である必要があり、文字、数字、および_のみで構成されている必要があります。空白のままにすると、この行にフィールドは追加されません。
    • データ型 このメニューから選択すると、このフィールドに保存できるデータのタイプが決まります。最も一般的なタイプはvarcharです。 可変長テキスト文字列の場合、 int4 整数の場合はfloat4、小数の場合はfloat4。 フィールドタイプを参照してください 詳細については、以下のセクションをご覧ください。
    • タイプ幅 このフィールドは空白のままにすることができます。その場合、選択したタイプのデフォルトサイズが使用されます。それ以外の場合は、フィールドに格納できる文字数(charまたはvarcharフィールドの場合)または数字(数値フィールドの場合)である数値を入力する必要があります。 blobやdateなどの一部のタイプでは、タイプを指定する必要がないか、まったく指定できません。
    • フィールドオプション 配列?の場合 チェックすると、このフィールドは複数の値を格納できる配列になります。 nullを許可しますか? がチェックされている場合、データベースはSQLNULL値をこのフィールドに挿入できるようにします。 主キー?の場合 がチェックされている場合、このフィールドはテーブルの主キーの一部になります。すべてのテーブルにはキーが必要です。これは通常、最初のフィールドであり、intまたはvarcharタイプです。 ユニークなとき がチェックされている場合、PostgreSQLはこのフィールドに同じ値を持つ複数のレコードを防ぎます。主キーフィールドも自動的に一意になります。
  1. フィールドへの入力が完了したら、作成を押します。 ページ下部のボタン。テーブルがデータベースに追加され、既存のテーブルを一覧表示するページに戻ります。


データベース編集ページ

フィールドの追加と編集

新しいフィールドをテーブルに追加したり、既存のフィールドの名前を変更したりできます。ただし、フィールドを削除して再度追加しない限り、フィールドのサイズのタイプを変更する方法はありません。フィールドが作成されると、最初はテーブルの既存の行に常にNULL値が含まれます。

フィールドを追加するには、次の手順に従います。

  1. モジュールのメインページで、テーブルを含むデータベースのアイコンをクリックします。次に、テーブル自体のアイコンをクリックします。これにより、下のスクリーンショットに示すように、既存のフィールドの名前、タイプ、およびサイズを一覧表示するページが表示されます。
  2. [タイプのフィールドを追加]ボタンの横にあるメニューから新しいフィールドのタイプを選択します。クリックすると、ブラウザに残りの詳細を入力するためのフィールド作成フォームが表示されます。
  3. このフィールドの名前は、文字、数字、および_文字のみで構成され、フィールド名に入力します。 テキストボックス。同じテーブル内の2つのフィールドに同じ名前を付けることはできません。
  4. charまたはvarcharフィールドの場合、保持できる最大文字数をタイプ幅に入力します。 テキストボックス。数値フィールドの場合は、代わりに 10,2 のように、コンマで区切って2つの数値を入力する必要があります。 。 1つ目は、このフィールドの数値が格納できる最大桁数であり、2つ目は、小数点の右側の桁数です。その他のフィールドタイプの場合、タイプ幅 テキストボックスはまったく表示されません。
  5. このフィールドに同じタイプの複数の値を格納できるようにする場合は、はいを選択します。 配列フィールド? オプション。
  6. 作成をクリックします 入力にエラーがない限り、フィールドをテーブルに追加します。


テーブル編集ページ

フィールドが作成されると、そのタイプまたはサイズを変更できるMySQLとは異なり、名前のみを変更できます。ただし、これは、そこに含まれるデータに対するリスクがないことを意味します。テーブルのフィールドの名前を変更するには、次の手順に従います。

  1. モジュールのメインページで、テーブルを含むデータベースのアイコンをクリックしてから、テーブルアイコンをクリックします。これにより、テーブル内のフィールドのリストが表示されます。その例を上のスクリーンショットに示します。
  2. 変更するフィールドの名前をクリックします。
  3. 編集フォームで、フィールド名を更新します 新しい名前のテキストボックス。当然、これはフィールドを作成するときに適用されるのと同じ命名規則に従う必要があります。
  4. 保存をクリックします ボタンをクリックして、データベースに変更を加えます。

フィールドの削除

MySQLとは異なり、PostgreSQLデータベースサーバーには、テーブルからフィールドを削除するためのSQLコマンドが組み込まれていません。ただし、フィールドがない新しい一時テーブルを作成し、古いテーブルを削除して、元の名前に一時的に名前を変更することにより、フィールドの削除を実行することは可能です。これは機能し、Webminはすべてを自動的に実行できますが、インデックスやデフォルトのフィールド値などの一部の情報はプロセスで失われます。ただし、テーブル内の実際のデータ(削除されたフィールドのデータを除く)は安全です。

テーブルにデフォルト値のインデックスまたはフィールドが含まれていない場合は、次の手順に従ってフィールドを削除できます。

  1. モジュールのメインページでテーブルを含むデータベースのアイコンをクリックしてから、テーブルアイコン自体をクリックします。
  2. ドロップフィールドをクリックします 既存のフィールドのリストの下にあるテーブル編集フォームのボタン。これにより、テーブル内のすべてのフィールドを一覧表示するページが表示されます。各フィールドの横には、[これをドロップ]の下にラジオボタンがあります。 。
  3. テーブルから削除するラジオボタンフィールドを選択します。
  4. 選択ボックスをオンにして確認 フォームの下部にあるチェックボックス。
  5. ドロップフィールドを押す ボタンをクリックして、選択したフィールドを削除します。削除すると、同じページが再表示されるため、必要に応じて別のページを削除できます。

フィールドタイプ

PostgreSQLには多数のフィールドタイプがあり、そのすべてがWebminでサポートされています。ただし、それらのすべてが平均的なデータベースに特に役立つわけではありません。最良の情報源は、http://www.postgresql.org/docs/7.3/static/datatype.html

の公式ドキュメントです。

PostgreSQLには、ポイント、パス、ボックス、円などの幾何学的オブジェクトを格納するためのいくつかのタイプと、inet、cidr、macaddrなどのネットワーク情報のためのタイプがあります。これらすべてのタイプのフィールドは、上記のドキュメントに記載されていなくても、このモジュールを使用して作成および編集できます。ただし、他のデータベース(OracleやMySQLなど)はこれらのタイプをサポートしていないため、プログラムをデータベースに依存させたくない場合は、これらのタイプを避けるのが賢明かもしれません。

テーブルの内容の表示と編集

PostgreSQLモジュールを使用すると、主キーがない場合でも、任意のデータベース内の任意のテーブルの内容を表示および編集できます。 MySQLモジュールとは異なり、各レコードの一意の識別子を含む特別なoid列を使用して、編集する特定の行を識別できます。

テーブルの内容を表示するには、次の手順に従います。

  1. メインページで、テーブルを含むデータベースのアイコンをクリックしてから、テーブル自体のアイコンをクリックします。
  2. テーブル編集フォームで、データの表示をクリックします。 下部のボタン。これにより、テーブルの最初の20行のテーブルを含むページが表示されます。
  3. テーブルに1ページに表示できるよりも多くの行が含まれている場合、表示範囲の開始と終了、および行の総数が上部に表示されます。その横には、次または前の20レコードに移動するための左矢印と右矢印があります。 MySQLモジュールとは異なり、このページでレコードを検索したり、特定の行番号にジャンプしたりする方法はありません。

この同じページを使用して、レコードを編集、削除、または追加することもできます。編集するレコードは、最初に各行の右側にあるチェックボックスを使用して選択するか、すべて選択する必要があります および*選択リンクを反転します。 [*選択した行を編集]をクリックすると ボタンをクリックすると、選択したすべてのレコードの値がテキストボックスに表示されてページが再表示されます。好きなように変更して、保存をクリックします ページの下部にあるボタンをクリックして、データベースを更新します。または、キャンセルを押します 変更を保存せずに編集を停止したい場合。

レコードを削除するには、同じチェックボックスと選択リンクを使用してレコードを選択し、選択した行を削除をクリックします。 ボタン。選択したレコードは、それ以上の確認なしにデータベースからすぐに削除されます。

新しいレコードを追加するには、行を追加をクリックします 表の下のボタン。新しい詳細を入力するための空のテキストボックスを含む追加の行が表示されます。 保存をクリックします 新しいレコードをテーブルに追加し、新しい行が表示されるようにディスプレイを移動します。または、キャンセルをクリックすることもできます レコードの追加について気が変わった場合。

テーブルとデータベースの削除

このモジュールには、データベース、またはデータベース全体とその中のすべてからテーブルを削除するためのボタンも含まれています。テーブルが削除されると、テーブルに含まれるすべてのレコードとフィールドが失われます

1つを削除するには、次の手順に従います。

  1. モジュールのメインページで、テーブルを削除するデータベースのアイコンをクリックしてから、テーブル自体のアイコンをクリックします。
  2. ドロップテーブルをクリックします フィールドリストの下にあるボタン。これにより、確認ページが表示され、確認が行われ、削除されるレコードの数が示されます。
  3. 先に進むには、ドロップテーブルをクリックします もう一度ボタンを押します。削除されると、データベース内の存続しているテーブルのリストに戻ります。

データベース全体とその中のすべてのテーブルとレコードを削除することもできます。任意のデータベースを削除できますが、他のデータベースのリストを取得するときにモジュールがデータベースに接続し、常に存在すると想定しているため、template1を削除することはお勧めできません。いつものように、バックアップを作成していない限り、削除を元に戻す方法はありません。

本当にデータベースを削除したい場合は、次の手順に従います。

  1. メインページで、削除するデータベースのアイコンをクリックします。
  2. データベースの削除を押します テーブルのリストの下にあるボタン。確認ページが表示され、先に進むと失われるテーブルとレコードの数が示されます。
  3. 削除を続行するには、[データベースの削除]をクリックします ボタンを押すと、モジュールのメインページに戻ります。

初期PostgreSQLデータベースを変更すると、template1データベースを削除できます。 削除されない他のデータベースへのモジュール構成のフィールド。

SQLコマンドの実行

PostgreSQLモジュールは、データベースでSQLコマンドを実行し、その出力を表示するためのシンプルなインターフェイスも提供します。使用する手順は次のとおりです。

  1. メインページで、コマンドを実行するデータベースのアイコンをクリックします。
  2. SQLの実行をクリックします テーブルアイコンのリストの下にあるボタン。これにより、SQLコマンドの入力、コマンドのファイルの実行、およびデータベースへのデータのロードを行うためのページが表示されます。
  3. ページ上部のテキストボックスに任意のSQLコマンドを入力し、実行を押します。 ボタン。 SQL構文に誤りがある場合、またはコマンドを実行できない場合は、PosygreSQLからのエラーメッセージが表示されます。それ以外の場合は、SQLの結果の表(存在する場合)が表示されます。 SELECTステートメントのみが結果を生成します-UPDATE、INSERT、およびレコードを変更するその他のコマンドは生成しません。

MySQLモジュールとは異なり、ファイルから複数のSQLステートメントを実行するためのコマンド履歴やサポートはありません。

データベースのバックアップと復元

データベースの1つに重要な情報が含まれている場合は、ディスク障害やSQLの誤りによってデータが失われた場合に備えて、定期的にバックアップする必要があります。また、多くのレコードを変更する複雑なSQLステートメントを実行するなど、潜在的に危険な操作を実行する前にバックアップを作成することもお勧めします。

pg_dumpおよびpg_restoreコマンドのパラメーターが変更されたため、このモジュールでは、PostgreSQLバージョン7.2以降を使用している場合にのみバックアップを作成および復元できます。古いリリースを使用している場合、以下の手順で説明されているボタンは表示されません。

モジュールを使用してバックアップを作成するには、次の手順に従います。

  1. メインページで、バックアップするデータベースのアイコンをクリックします。
  2. テーブルのリストの下にある[*バックアップ*]ボタンをクリックします。これにより、バックアップ先とオプションを入力するためのフォームが表示されます。
  3. バックアップファイルパス フィールドに、バックアップを書き込む必要のある完全なファイルパス( /tmp/backup.tarなど)を入力します。 。ファイルはまだ存在していてはなりません。存在している場合は、バックアップを押したときにエラーが発生します。 ボタン。
  4. [バックアップファイル形式]メニューから、作成するファイルの種類を選択します。使用可能なオプションは次のとおりです。*プレーンSQLテキスト*ファイルには、データベースにテーブルを再作成してデータを再入力する一連のSQLコマンドが含まれます。この形式は、バックアップファイルを手動で編集できるという点で便利ですが、SQLバックアップに大きなオブジェクト(blobなど)を含めたり、そこから選択的に復元したりすることはできません。 * tarアーカイブ*バックアップファイルは、テーブルの構造と内容を指定するさまざまなファイルを含む、標準のUnixtarファイルになります。大きなオブジェクトがサポートされており、選択的な復元が可能です。 *カスタムアーカイブ*ファイルはPostgreSQLのカスタムバックアップ形式になります。これは圧縮されており、大きなオブジェクト、データの除外、復元時の並べ替えをサポートしています。
  5. バックアップを作成するには、フォームの下部にある[*バックアップ*]ボタンを押します。すべてがうまくいけば、テーブルリストにリダイレクトされます。そうでなければ、バックアップコマンドの実行とそのエラー出力を示すページが表示されます。

重要な本番目的で使用されているデータベースがある場合は、1日1回など、定期的にバックアップする必要があります。上記の手順を毎日実行する代わりに、Scheduled Cron Jobsモジュール(第10章で説明)を使用して、バックアップを実行するジョブを作成できます。実行するコマンドを見つけるには、上記の手順を使用して最初にバックアップを作成してから、Webminアクションログモジュール(第54章で説明)にアクセスして、使用したコマンドを確認します。

バックアップファイルが作成されると、同じシステムまたはMySQLを実行している別のサーバーに復元できます。手順は次のとおりです。

  1. モジュールのメインページで、バックアップを復元するデータベースのアイコンをクリックします。
  2. 復元を押します テーブルのリストの下にあるボタンをクリックして、バックアップファイルを選択するためのフォームを表示します。
  3. バックアップファイルパス フィールドに、 /tmp/backup.tarなどのPostgreSQLバックアップデータを含むファイルへのフルパスを入力します 。このファイルは、バックアップフォームで利用可能な任意の形式にすることができます。
  4. 通常、復元プロセスは、データをテーブルに復元する前に、テーブルの再作成を試みます。これを回避するには、テーブルではなくデータのみを復元しますか?を変更します。 はいへのフィールド 。これは、バックアップ内のすべてのテーブルがすでに存在する場合にのみ機能します。現在含まれているすべてのデータは、復元されたレコードと結合されます。
  5. 通常、バックアップ内のテーブルがデータベースにすでに存在する場合、復元プロセスは失敗します。復元する前に既存のテーブルを削除するには、復元する前にテーブルを削除しますか?を変更します。 はいへのフィールド 。このフィールドと前のフィールドの両方をはいに設定しても意味がありません 。
  6. 復元をクリックします ボタンをクリックして、バックアップファイルからデータとテーブルを再ロードします。何か問題が発生した場合は、pg_restoreコマンドからの出力を示すエラーメッセージが表示されます。それ以外の場合は、データベース内のテーブルのリストに戻ります。

PostgreSQLユーザーの管理

ご想像のとおり、PostgreSQLデータベースサーバーは、誰もが接続してデータの操作を開始できるようにするだけではありません。代わりに、ユーザー名とパスワードの送信をクライアントに要求することでクライアントを検証し、それを自身の内部ユーザーリストと照合します。このデータベースユーザーのリストは、/ etc/passwdファイルのUnixユーザーリストとは完全に別のものです。

デフォルトでは、ユーザーpostgresのみが存在し、ユーザーはすべてのデータベースとテーブルに完全にアクセスできます。データベースを使用するアプリケーションを作成している場合は、そのアプリケーションがログインするための新しいユーザーを作成する必要があります。複数の人がpsqlコマンドまたは他のクライアントプログラムを使用してデータベースにアクセスする場合は、それぞれが独自のログインとパスワードを持っている必要があります。

新しいユーザーを追加するには、次の手順に従います。

  1. モジュールのメインページで、PostgreSQLユーザーをクリックします。 アイコン。これにより、以下のスクリーンショットに示すように、既存のユーザーとその能力のリストが表示されます。
  2. 新しいユーザーリンクを作成をクリックします リストの上または下。ユーザー作成フォームが表示されます。
  3. ユーザー名に、文字、数字、および_文字のみで構成されるユーザーの一意の名前を入力します。 分野。
  4. このユーザーのパスワードを設定するには、パスワードの2番目のラジオボタンを選択します フィールドに入力し、その横のテキストボックスにパスワードを入力します。 なしの場合 が選択されている場合、サーバーがパスワードなしの接続を許可するように構成されていない限り、ユーザーはログインできません(*クライアントアクセスの制限*セクションで説明されています)。
  5. このユーザーが自分のデータベースを作成できるようにする場合は、データベースを作成できますか?を変更します。 いいえへのフィールド 。マスター管理ユーザー(postgres)のみが実際にこれを実行できる必要があります。
  6. このユーザーにPostgreSQLユーザーを編集および作成する権限を付与するには、ユーザーを作成できますか?を変更します。 はいへのフィールド 。繰り返しますが、これは通常いいえのままにしておく必要があります 。
  7. 有効期限 フィールドは、このユーザーを使用できる期間を制御します。 永遠にの場合 を選択すると、有効期限はありませんが、2番目のオプションを選択し、テキストフィールドにYYYY-MM-DD形式の日付を入力すると、その日付以降はアカウントを使用できなくなります。
  8. 作成をクリックします ボタンをクリックして、新しいアカウントをPostgreSQLのユーザーリストに追加します。人々またはプログラムは、このユーザーとしてすぐにログインできるようになります。多くの場合、データベースサーバーはデフォルトで設定されており、ローカルユーザーはパスワードをまったく入力しなくてもログインできます。これを変更するには、クライアントアクセスの制限を参照してください。 セクション。
  9. この新しいユーザーがアクセスできるテーブルとビューを正確に構成するには、*オブジェクトのアクセス許可の編集*セクションの手順に従います。


既存のPostgreSQLユーザー

ユーザーが作成されたら、上のスクリーンショットに示されているユーザーリストでその名前をクリックして編集できます。これにより、ユーザーの名前を変更できないことを除いて、ユーザー作成フォームとほぼ同じ編集フォームに移動します。パスワード、有効期限、その他のフィールドの変更が完了したら、保存を押します。 ボタンをクリックして、変更をアクティブにします。

削除をクリックして、ユーザーを削除することもできます 編集ページのボタン。 postgresユーザーは通常このWebminモジュールがPostgreSQLにログインするために使用するため、削除しないように注意してください。実際、このユーザーを編集しても、有効期限を設定したり、データベースや他のユーザーを作成する機能を奪ったりすると、問題が発生する可能性があります。

他の多くのモジュールと同様に、このモジュールは、Unixユーザーがそれぞれ追加、変更、または削除されたときにPostgreSQLユーザーを自動的に作成、更新、または削除するように構成できます。これは、システム上の一部のUnixユーザーにデータベースへのアクセスを許可し、パスワードの同期を維持したい場合に役立ちます。

同期を設定するには、次の手順に従います。

  1. モジュールのメインページで、PostgreSQLユーザーをクリックします。 アイコンをクリックし、既存のアカウントのリストの下にあるフォームまで下にスクロールします。
  2. 新しいUnixユーザーごとに新しいPostgreSQLユーザーを作成する場合は、[*Unixユーザーが追加されたときに新しいPostgreSQLユーザーを追加する*]チェックボックスをオンにします。ただし、自動的に作成されたユーザーには、特定のオブジェクト権限はありません。
  3. 一致するUnixユーザーに同じことが起こったときにPostgreSQLユーザーにパスワードを変更させたい場合は、[一致するUnixユーザーが変更されたときにPostgreSQLユーザーを更新する]チェックボックスをオンにします。
  4. 同じ名前のUnixユーザーと同時にPostgreSQLユーザーを削除するには、[*一致するUnixユーザーが削除されたらPostgreSQLユーザーを削除する*]チェックボックスをオンにします。
  5. 保存を押します ボタンをクリックして、新しい同期設定をアクティブにします。

PostgreSQLグループの管理

PostgreSQLは独自のグループの内部リストを保持しており、各グループには0人以上のユーザーを含めることができます。グループは、一度に多くのユーザーにテーブルまたはビューへのアクセスを許可できるため、オブジェクトのアクセス許可を割り当てるときに最も役立ちます。それを除けば、それらはアクセス制御や認証において何の役割も果たしません。

グループを作成するには、次の手順に従います。

  1. モジュールのメインページで、PostgreSQLグループをクリックします。 アイコン。ブラウザには、既存のグループとそのメンバー(存在する場合)のテーブルが表示されます。 PostgreSQLが最初にインストールされたとき、グループは定義されていません。
  2. 新しいグループの作成をクリックします グループ作成フォームに移動するためのリンク。
  3. グループ名に文字、数字、_文字で構成される名前を入力します 分野。他のグループまたはユーザーが同じ名前を持つことはできません。
  4. グループIDを残す IDはWebminによって自動的に選択されるため、フィールドは変更されません。
  5. メンバーからこのグループのメンバーになるユーザーを選択します リスト。ほとんどのブラウザでは、Ctrlキーを押しながらクリックして複数のユーザー名を選択するか、Shiftキーを押しながらクリックして範囲全体を選択できます。
  6. 作成をクリックします グループを追加します。 オブジェクト権限の編集で説明されているように、オブジェクト権限を割り当てることができるようになりました。 セクション。

ユーザーと同じように、作成したグループは、PostgreSQLグループページのリストで名前をクリックし、編集フォームの名前またはメンバーシップリストを変更して、保存をクリックすることで編集できます。 。または、削除をクリックして削除することもできます 同じフォームのボタン。

クライアントアクセスの制限

通常、デフォルトのPostgreSQL構成では、すべてのユーザーがログインせずに同じシステムからデータベースサーバーに接続できますが、すべてのリモートアクセスができなくなります。クライアントが他のシステムから接続できるようにする場合(たとえば、別のWebサーバーからアクセスされるデータベースサーバーを設定する場合)、これを許可するようにPostgreSQLを構成する必要があります。

別のホストへのアクセスを許可するには、次の手順に従います。

  1. モジュールのメインページで、許可されたホストをクリックします アイコン。接続が許可されているホスト、クライアントがアクセスできるデータベース、および使用されている認証モードを一覧表示するページが表示されます。通常、最初はローカル接続と127.0.0.1からの接続のみが許可されます。
  2. 新しい許可されたホストの作成をクリックします リストの上または下にリンクして、ホスト作成フォームを表示します。
  3. ホストアドレス フィールドで、単一ホストを選択します リモートクライアントシステムのIPまたはホスト名を隣接するフィールドに入力します。または、LAN全体を許可するには、ネットワークを選択します ネットワークアドレスを入力します( 192.168.1.0 など) )およびネットマスク( 255.255.255.0 など) )その隣のフィールドに。
  4. 指定したホストまたはネットワークにサーバー上のすべてのデータベースへのアクセスを許可するには、データベースを残します フィールドをすべてのデータベースに設定 。それ以外の場合は、メニューから選択して、クライアントをその1つだけに制限します。クライアントに2つのデータベースへのアクセスを許可する場合は、データベースからそれぞれ異なる選択肢を持つ2つのホストエントリを追加する必要があります。 メニュー。
  5. 認証モードの場合 フィールドで、プレーンテキストパスワードを選択します 。オプション認証は不要 また、クライアントシステム上のユーザーが接続できるようになりますが、有効なパスワードを入力する必要はありません。明らかに、これはあまり安全ではありません。
  6. 作成を押します ボタンをクリックして、新しい許可ホストエントリを追加します。

システムに複数のユーザーがいて、それぞれが自分に属するPostgreSQLデータベースにデータを持っている場合は、パスワードなしでデータベースサーバーにログインすることを許可しないでください。デフォルトでは、PostgreSQLはこれを正確に許可しますが、これは特に安全ではありません。幸い、簡単に修正できます。ただし、Webmin自体がデータベースからロックアウトされるリスクがあります。これは、多くの場合、パスワードなしでユーザーpostgresとしてログインするようにデフォルトで設定されているためです。

以下の手順に従って、パスワードを使用してログインするようにモジュールを再構成し、ローカルユーザーに同じことを強制します。

  1. モジュールのメインページで、PostgreSQLユーザーをクリックします。 アイコンをクリックしてから、postgresユーザーで編集フォームを表示します。
  2. [パスワード]フィールドの2番目のラジオボタンを選択し、隣接するテキストフィールドに安全なパスワードを入力します。次に、[保存]をクリックします 。
  3. モジュールのメインページに戻り、 Module Configを押します。 リンク。
  4. 管理パスワード フィールドで、設定を選択します 選択したパスワードをテキストフィールドに入力します。次に、[保存]をクリックします フォームの下部にあります。
  5. 許可されたホストをクリックします アイコンをクリックしてから、ローカル接続 ホストアドレス 桁。 *認証モード*フィールドをプレーンテキストパスワードに変更します 、[保存]をクリックします ボタン。ブラウザが許可されたホストのリストに戻ったら、 127.0.0.1をクリックします。 同じ変更を加えます。
  6. モジュールのメインページに戻ります。すべてがうまくいけば、データベースを表示および管理することができ、すべてのユーザーが接続するためにパスワードが必要になります。

クライアントがデータベースサーバーに接続すると、PostgreSQLは[許可されたホスト]ページのホストエントリを順番にチェックします。クライアントアドレスと要求されたデータベースに一致するものが見つかるとすぐに、そのエントリの認証モードが使用されます。この機能を使用して、ブロックするIPに設定された*ホストアドレス*フィールドと認証モードを使用してホストエントリを作成することにより、特定のホストをブロックし、他のすべてのホストを許可することができます。 接続を拒否に設定 。このエントリは、同じクライアントを許可するより広範なエントリの上のリストに表示される必要があります。

新しい許可されたホストエントリは常にリストの最後に追加されるため、ページには移動する機能があります。 移動の下にある上下の矢印 リストの列をクリックすると、エントリをそれぞれ1つ上または下に移動できます。

オブジェクト権限の編集

各PostgreSQLオブジェクト(テーブル、ビュー、インデックス、またはシーケンス)には、それを作成したユーザーである所有者がいます。デフォルトでは、所有者のみがオブジェクトからデータを選択したり、オブジェクトのレコードを更新したりできます。これは、サーバーに複数のユーザーがいて、全員が同じテーブルにアクセスする必要がある場合はあまり役に立ちません。幸い、以下の手順に従って、データベースオブジェクトへのアクセスを他のユーザーまたはグループに許可することができます。

  1. モジュールのメインページで、[付与された特権]アイコンをクリックします。データベースに実際にいくつかのテーブルがあると仮定すると、これにより、既存のすべてのオブジェクトとそれらの現在のアクセス許可を一覧表示するページが表示されます。
  2. アクセスを許可するオブジェクトの名前をクリックすると、特権編集フォームが表示されます。
  3. 権限を付与する 表には、アクセスが許可されているすべてのユーザーとグループが一覧表示され、その後に新しい行を追加するための空白行が表示されます。ほとんどの場合、空の行が1つだけ含まれます。 ユーザー 列で、特権を付与するユーザーまたはグループの名前をメニューから選択するか、全員を選択します すべてのPostgreSQLユーザーにアクセスを許可します。 [権限]列で、選択したユーザーまたはグループに付与する必要がある権限のチェックボックスをオンにします。使用可能なオプションの意味は次のとおりです。*SELECT*チェックすると、ユーザーはこのテーブルのレコードを表示したり、SQLSELECTクエリで表示したりできます。 * UPDATE *このオプションを選択すると、ユーザーはテーブル内の既存のレコードを更新できます。 * INSERT *このオプションにより、ユーザーはSQLINSERTステートメントを使用してテーブルに新しいレコードを追加することができます。 * DELETE *チェックすると、ユーザーはテーブルから既存のレコードを削除できるようになります。 *RULE*ユーザーがテーブルまたはビューにルールを作成できるようにします。ルールは、テーブルに挿入、更新、または削除されたデータを変換するために実行されるSQLコードの一部です。 *参照*ユーザーがこのテーブルを外部キーとして参照するフィールドを作成できるようにします。 * TRIGGER *チェックすると、ユーザーはこのテーブルのトリガーを作成できるようになります。テーブルには一度に1つの空の行しか表示されないため、複数のユーザーにアクセスを許可する場合は、オブジェクトのアクセス許可を保存して再編集する必要があります。複数のユーザーに同じ権限を付与する場合は、それらをグループに入れて、代わりにグループへのアクセスを許可することをお勧めします。 #保存を押します ページの下部にあるボタンをクリックして、新しい権限をアクティブにします。

MySQLとは異なり、ユーザーにデータベース全体へのアクセス、またはテーブル内のフィールドへのアクセスを許可する方法はありません。すべての特権は、テーブルレベルでのみ付与されます。

モジュールアクセス制御

WebminUsersが説明しているように、一部のモジュールの機能のサブセットにのみアクセスできるWebminユーザーを作成することができます。 PostgreSQLデータベースサーバーモジュールの場合、ユーザーが特定のデータベースのテーブルとフィールドを管理できるように制限し、ユーザー、グループ、または付与された権限を編集できないようにすることができます。これは、サーバー上のさまざまなデータベースがさまざまな人によって所有されており、それぞれにWebminログインを与えて、それらに属するデータベースのみを管理する場合に役立ちます。

ユーザーにモジュールへのアクセスを許可したら、特定のデータベースのみにユーザーを制限するための手順は次のとおりです。

  1. Webminユーザーモジュールで、モジュールにアクセスできるユーザーまたはグループの名前の横にあるPostgreSQLデータベースサーバーをクリックします。
  2. アクセス制御フォームで、モジュール構成を編集できますか?を変更します。 いいえへのフィールド 。これは、モジュールがデータベースへのアクセスに使用するプログラムをユーザーが変更しないようにするために必要です。
  3. このユーザーが管理できるデータベース フィールドで、選択済みを選択します オプション。次に、以下のリストから、彼がアクセスする必要のあるデータベースを選択します。
  4. 新しいデータベースを作成できますか?を変更します いいえへのフィールド 。このタイプの制限付きユーザーが新しいデータベースを追加できる必要がある理由はありません。
  5. ユーザーが自分のデータベースを削除できるようにする場合を除いて、データベースを削除できますか?を変更します。 いいえへのフィールド 。 はいに設定したままにします ただし、彼はあなたがアクセスを許可したものだけを削除できるので、無害です。
  6. PostgreSQLサーバーを停止および起動できますか?を変更します いいえへのフィールド 。
  7. ユーザー、グループ、ホスト、助成金を編集できますか?を変更します いいえへのフィールド 、そのため、すべてのデータベースにアクセスできる新しいPostgreSQLユーザーを作成することはできません。
  8. バックアップを作成できますか?を設定します いいえへのフィールド 、ユーザーにバックアップを作成する権限を与えると、システム上のファイルを上書きできる場合があります。
  9. バックアップを復元できますか? フィールドは安全にはいに設定できます 、ユーザーがバックアップファイルからデータベースにデータを再ロードできるようにすることに危険はないためです。
  10. 最後に、新しいアクセス制御制限をアクティブにするには、[保存]をクリックします 。

PostgreSQLデータベースサーバーモジュールの構成

他のほとんどのモジュールと同様に、このモジュールには、 Module Configをクリックして設定できるいくつかのオプションがあります。 メインページの左上隅にあるリンク。 *構成可能オプション*の下にリストされているフィールドは、データベースおよびユーザーインターフェースへの接続に関連し、システム構成の下にリストされているフィールドは PostgresSQLプログラムとファイルへのパスを定義します。

オペレーティングシステムのデフォルトとは異なるディレクトリにデータベースサーバーをインストールしていない限り、通常、2番目のセクションのフィールドを変更する必要はありません。これは、Linuxディストリビューションに付属のパッケージを使用する代わりにソースコードからPostgreSQLをインストールした場合、またはPostgreSQLのコピーが2つインストールされていて、2番目のインストールを管理するためにモジュールのクローン(WebminConfigurationでカバー)を構成している場合に発生する可能性があります。


Webmin
  1. データベースサーバーとは何ですか?それは何のために使用されますか?

  2. JabberIMサーバー

  3. PostgreSQLサーバーを保護する方法

  1. 例を含むPostgreSQLドロップデータベース

  2. PostgreSQLでデータベースを作成する方法

  3. Ubuntu20.04PostgreSQLのインストール

  1. Ubuntu22.04PostgreSQLのインストール

  2. Ubuntu20.04にPostgreSQLをインストールする方法

  3. CentOS8にPostgreSQLをインストールする方法