ステータス:非推奨

この記事では、サポートされなくなったバージョンのCentOSについて説明します。 現在CentOS6を実行しているサーバーを運用している場合は、サポートされているバージョンのCentOSにアップグレードまたは移行することを強くお勧めします。

理由 CentOS 6は2020年11月30日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このため、このガイドは維持されなくなりました。

代わりに参照:このガイドは参照として役立つ場合がありますが、他のCentOSリリースでは機能しない場合があります。 可能な場合は、使用しているCentOSのバージョン用に作成されたガイドを使用することを強くお勧めします。

次のDigitalOceanチュートリアルは、CentOS7サーバーへのPostgreSQLのインストールの概要を示しているので興味深いかもしれません。

序章


一般に「postgres」と呼ばれるPostgreSQLは、SQLクエリ言語を使用してデータを操作する一般的なデータベース管理システムです。

このガイドでは、CentOSVPSにpostgresをインストールして使用する方法について説明します。

PostgreSQLのインストール方法


CentOSにはデフォルトのリポジトリ内にpostgresパッケージが含まれていますが、postgresプロジェクト自体から入手可能なパッケージを使用します。

これにより、ソースからインストールしなくても、ソフトウェアの最新バージョンにアクセスできるようになります。

CentOSPostgresパッケージを除外する


postgresをインストールする前に、プロジェクトのWebサイトから最新バージョンを取得するために、postgresのCentOSバージョンを除外する必要があります。

CentOSリポジトリ設定ファイルをテキストエディタで開きます。

nano /etc/yum.repos.d/CentOS-Base.repo

[base]セクションの下部に、postgresパッケージを除外する行を追加します。

[base] name =CentOS-$releasever-ベースmirrorlist=http://mirrorlist.centos.org/?release = $ releasever&arch = $ basearch&repo = os#baseurl = http://mirror.centos.org/centos/$releasever / os / $ basearch / gpgcheck = 1 gpgkey = file:/// etc / pki / rpm-gpg / RPM-GPG-KEY-CentOS-6 Exclusive = postgresql *

[updates]セクションの下部に同じ行を追加して、yumがデフォルトのリポジトリからpostgresを更新しないようにします。

[更新]name=CentOS-$releasever-更新mirrorlist=http://mirrorlist.centos.org/?release = $ releasever&arch = $ basearch&repo = updates#baseurl = http://mirror.centos.org/centos/$releasever / updateds / $ basearch / gpgcheck = 1 gpgkey = file:/// etc / pki / rpm-gpg / RPM-GPG-KEY-CentOS-6 Exclusive = postgresql *

Postgresリポジトリを追加する


さて、postgresパッケージの相互作用のためにデフォルトのリポジトリを気にしないようにyumに指示しました。

今、代替手段を提供する必要があります。 postgresプロジェクトのWebサイトで提供されているパッケージを使用します。

サイトにアクセスして、CentOSバージョンで利用可能なpostgresの最新バージョンを見つけてください。

最新バージョンのpostgresとお使いのバージョンのCentOSに一致するリンクをControlキーを押しながらクリックまたは右クリックします。 「リンクアドレスのコピー」または同様のオプションを選択します。

Postgres copy location of most recent version

ドロップレットセッションに戻り、ホームディレクトリに移動します。 curl -Oと入力し、ダウンロードリンクを貼り付けます。

 cd〜curl -O  http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm

次のコマンドを入力して、ダウンロードしたパッケージをインストールします。

rpm -ivh pgdg*

これにより、システムはプロジェクトのWebサイトからpostgresパッケージをプルできるようになります。

これを実行して、最新バージョンを取得できます。 これらのパッケージにはバージョン番号が含まれているため、使用されているバージョンを確認するために検索する必要があります。

yum list postgres*

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.linux.duke.edu
 * extras: mirror.linux.duke.edu
 * updates: mirrors.kernel.org
Installed Packages
postgresql93.x86_64                  9.3.1-1PGDG.rhel6        @pgdg93
postgresql93-libs.x86_64             9.3.1-1PGDG.rhel6        @pgdg93
postgresql93-server.x86_64           9.3.1-1PGDG.rhel6        @pgdg93
Available Packages
postgresql93-contrib.x86_64          9.3.1-1PGDG.rhel6        pgdg93 
postgresql93-debuginfo.x86_64        9.3.1-1PGDG.rhel6        pgdg93

この場合、すべてのパッケージにバージョン9.3の「93」が含まれていることがわかります。 「-server」パッケージをダウンロードします。

yum install postgresql93-server

このガイドの残りの部分では、「93」をシステムの現在のバージョンのpostgresに変更します。

データベース環境を初期化する


次のように入力して、データベース環境を初期化できます。

service postgresql-9.3 initdb

次に、起動時に起動するように構成し、ソフトウェアを起動します。

chkconfig postgresql-9.3 on
service postgresql-9.3 start

これで、postgresの使用を開始する準備が整いました。

Postgresデータベースにログインする方法


デフォルトでは、postgresはpostgresというユーザーとデータベースを作成します。

デフォルトのセキュリティスキームでは、postgresユーザーはアクセスが必要なユーザーだけがアクセスできると想定しています。 これは、sudoルールの設定によって制御できます。

psqlと呼ばれるインターフェースを介してpostgresデータベースソフトウェアと対話します。 データを操作および照会できるプロンプトが表示されます。

今のところ、次のようにpostgresユーザーにログインします。

su - postgres

プロンプトが変わります。 これで、次のように入力して、ユーザー名に一致するデータベースに接続できます。

psql

プロンプトが再び変更され、今回はpostgresデータベースを操作していることを示します。

このインターフェースを終了する必要がある場合は、いつでも次のように入力できます。

\q

その後、rootユーザーシェルに戻るには、次のように入力します。

exit

いくつかの役立つpsqlコマンド


現在の環境を把握するのに役立ついくつかのコマンドを次に示します。

  • :ここにリストされていないものを含むpsqlコマンドの完全なリストを取得します。

  • \ h :SQLコマンドのヘルプを取得します。 これに続いて特定のコマンドを実行すると、構文のヘルプを取得できます。

  • \ q :psqlプログラムを終了し、Linuxプロンプトを終了します。

  • \ d :現在のデータベースで使用可能なテーブル、ビュー、およびシーケンスを一覧表示します。

  • \ du :利用可能な役割を一覧表示します

  • \ dp :リストアクセス権限

  • \ dt :テーブルを一覧表示します

  • \ l :データベースを一覧表示します

  • \ c :別のデータベースに接続します。 これにデータベース名を続けます。

  • \ password :次のユーザー名のパスワードを変更します。

  • \ conninfo :現在のデータベースと接続に関する情報を取得します。

Postgresテーブルを作成する


次の構文を使用して、postgresでテーブルを作成できます。

CREATE TABLE new_table_nametable_column_title TYPE_OF_DATA column_constraintsnext_column_title TYPE_OF_DATA column_constraintstable_constraint table_constraintINHERITS previous_table_to_inherit_from;

アイスキャンデーの品種とその情報を保存するために、「アイスキャンデー」というテーブルを作成します。

CREATE TABLE popsicles (
    pop_id serial PRIMARY KEY,
    flavor varchar (50) NOT NULL,
    amount int NOT NULL,
    size varchar (10) check (size in ('small', 'normal', 'large'))
);

これで、\dtコマンドを使用してテーブルを表示できます。

\dt

           List of relations
 Schema |   Name    | Type  |  Owner   
--------+-----------+-------+----------
 public | popsicles | table | postgres
(1 row)

定義した列とデータ構造を確認するには、次のコマンドを入力します。

\d popsicles

                                  Table "public.popsicles"
 Column |         Type          |                         Modifiers  
                        
--------+-----------------------+------------------------------------
------------------------
 pop_id | integer               | not null default nextval('popsicles
_pop_id_seq'::regclass)
 flavor | character varying(50) | not null
 amount | integer               | not null
 size   | character varying(10) | 
 . . .

Postgresテーブルにデータを挿入する


これでデータベースにテーブルができましたが、まだデータがありません。 insertコマンドを使用してデータを入力できます。

INSERT INTOの後にテーブル名を入力します。 次に、括弧のセット内に列名のコンマ区切りリストを入力します。 次に、VALUESと入力し、その後に、列名に対応する値のコンマ区切りリストを含む2番目の括弧のセットを入力します。

今すぐ試してみましょう。 テーブルにいくつかのブドウのアイスキャンディーを挿入します。

INSERT INTO popsicles (flavor, amount, size) VALUES ('grape', 10, 'normal');

INSERT 0 1

INSERT 0 1は、コマンドが正常に受け入れられたことを示します。 このコマンドについて注意すべき点は、値リスト内の単語が一重引用符(’)の中にあり、コマンドがセミコロン(;)で終わっていることです。 これらの点は両方とも覚えておくことが重要です。

もう1つ注意すべき点は、pop_id列を設定していないことです。 これは、主キーとして定義したためです。 この列にはエントリごとに一意の値が必要であるため、postgresは作成する各レコードに次に使用可能な値を自動的に割り当てます。

より有用なテーブルを作成するために、さらにいくつかのデータを入力してみましょう。

INSERT INTO popsicles (flavor, amount, size) VALUES ('orange', 8, 'small');
INSERT INTO popsicles (flavor, amount, size) VALUES ('fudge', 20, 'large');
INSERT INTO popsicles (flavor, amount, size) VALUES ('eclair', 14, 'normal');
INSERT INTO popsicles (flavor, amount, size) VALUES ('rainbow', 4, 'small');

テーブルを作成したときに、「サイズ」列の許容値を定義したことを思い出してください。 Postgresは、値が「小さい」、「通常」、または「大きい」のいずれかであることを確認します。 別の値を提供しようとするとどうなりますか?:

INSERT INTO popsicles (flavor, amount, size) VALUES ('lime', 6, 'huge');

ERROR:  new row for relation "popsicles" violates check constraint "popsicles_size_check"
DETAIL:  Failing row contains (6, lime, 6, huge).

ご覧のとおり、postgresは正しいデータを入力したことを検証しました。 サイズに定義した値の1つがなかったため、最新のアイスキャンディーは拒否されました。

Postgresテーブルからデータを選択


selectコマンドを使用して、新しいテーブルでデータを照会できます。 selectコマンドは、指定された基準に一致するテーブルからデータを返します。

テーブルからすべての情報を返すために、アスタリスク(*)を使用できます。これは、「すべてに一致する」ことを意味する特別な記号です。

SELECT * FROM popsicles;

 pop_id | flavor  | amount |  size  
--------+---------+--------+--------
      1 | grape   |     10 | normal
      2 | orange  |      8 | small
      3 | fudge   |     20 | large
      4 | eclair  |     14 | normal
      5 | rainbow |      4 | small
(5 rows)

アスタリスクを必要な列に置き換えることで、列で選択できます。

SELECT flavor, amount FROM popsicles;

 flavor  | amount 
---------+--------
 grape   |     10
 orange  |      8
 fudge   |     20
 eclair  |     14
 rainbow |      4
(5 rows)

特定の結果のみを表示するようにフィルター処理する場合は、最後にwhereフィルターを追加できます。

SELECT * FROM popsicles WHERE amount <= 10;

 pop_id | flavor  | amount |  size  
--------+---------+--------+--------
      1 | grape   |     10 | normal
      2 | orange  |      8 | small
      5 | rainbow |      4 | small
(3 rows)

結論


これで、postgresがシステムにインストールされ、その基本的な使用法を適切に処理できるようになります。

postgresを扱うときに学ぶべきことは他にもたくさんあります。 他の記事を調べて、テーブルの管理方法クエリの作成方法権限の管理方法postgresのバックアップ方法[ X170X]、およびpostgresを保護する方法。

ジャスティン・エリングウッド