CentOS6.7 64bitにPostgreSQL9.4.5をRPMからインストール

CentOS6.7 64bitにPostgreSQL9.4.5をRPMからインストール

CentOS6.7の64bit版にPostgreSQL9.4.5をRPMからインストールする方法を以下に示します。

※CentOS7 64bitをご使用の場合は、当サイトのCentOS7 64bitにPostgreSQLをRPMからインストールのページをご覧ください。

CentOS6.7の標準リポジトリからインストールできるPostgreSQLのバージョンは、8.4.20と古いものになっています。PostgreSQLの公式サイトからRPMをダウンロードすることで、新しいバージョンのインストールを行うことができます。

※PostgreSQLのyumリポジトリを使用して、最新バージョンをインストールすることも可能です。詳細は当サイトのCentOS6 64bitのyumリポジトリにPostgreSQLを追加し、最新バージョンをインストールのページをご覧ください。

以下の各コマンドで、プロンプトが「#」で開始しているものはrootユーザーでの実行、「$」で開始しているものは一般ユーザーでの実行となります。

postgresql94-libs-9.4.5のインストール

postgresql94-9.4.5、postgresql94-server-9.4.5のインストールを行うには、依存関係となるpostgresql94-libs-9.4.5が必要となるため、先にpostgresql94-libs-9.4.5のインストールを行います。

postgresql94-libs-9.4.5のRPMをダウンロード

以下のコマンドを実行して、postgresql94-libs-9.4.5のRPMのダウンロードを行います。

※ダウンロード元のURLは、PostgreSQLの公式サイトから遷移できるCentOS6 64bit用のRPMのpostgresql94-libsのページにリンクがあります。

※バージョンは、最新のものから3世代前まで表示されるようになっていますが、この記事の公開時からの経過によっては、9.4.5がリンク切れになっている可能性もあります。

$ wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/postgresql94-libs-9.4.5-1PGDG.rhel6.x86_64.rpm

postgresql94-libs-9.4.5のインストール

以下のコマンドを実行して、postgresql94-libs-9.4.5のインストールを行います。

# rpm -Uvh postgresql94-libs-9.4.5-1PGDG.rhel6.x86_64.rpm

postgresql94-9.4.5のインストール

postgresql94-server-9.4.5のインストールを行うには、依存関係となるpostgresql94-9.4.5が必要となるため、先にpostgresql94-9.4.5のインストールを行います。

postgresql94-9.4.5のRPMをダウンロード

以下のコマンドを実行して、postgresql94-9.4.5のRPMのダウンロードを行います。

※ダウンロード元のURLは、PostgreSQLの公式サイトから遷移できるCentOS6 64bit用のRPMのpostgresql94のページにリンクがあります。

※バージョンは、最新のものから3世代前まで表示されるようになっていますが、この記事の公開時からの経過によっては、9.4.5がリンク切れになっている可能性もあります。

$ wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/postgresql94-9.4.5-1PGDG.rhel6.x86_64.rpm

postgresql94-9.4.5のインストール

以下のコマンドを実行して、postgresql94-9.4.5のインストールを行います。

# rpm -Uvh postgresql94-9.4.5-1PGDG.rhel6.x86_64.rpm

postgresql94-server-9.4.5のインストール

postgresql94-server-9.4.5のRPMをダウンロード

以下のコマンドを実行して、postgresql94-server-9.4.5のRPMのダウンロードを行います。

※ダウンロード元のURLは、PostgreSQLの公式サイトから遷移できるCentOS6 64bit用のRPMのpostgresql94-serverのページにリンクがあります。

※バージョンは、最新のものから3世代前まで表示されるようになっていますが、この記事の公開時からの経過によっては、9.4.5がリンク切れになっている可能性もあります。

$ wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/postgresql94-server-9.4.5-1PGDG.rhel6.x86_64.rpm

postgresql94-server-9.4.5のインストール

以下のコマンドを実行して、postgresql94-server-9.4.5のインストールを行います。

# rpm -Uvh postgresql94-server-9.4.5-1PGDG.rhel6.x86_64.rpm

データベースの初期化

PostgreSQLをインストール後、初めにデータベースの初期化を行う必要があります。

以下のコマンドを実行して、データベースの初期化を行います。

# service postgresql-9.4 initdb

インストール後の設定

PostgreSQLのサービスを起動

以下のコマンドを実行して、PostgreSQLのサービスを起動することができます。

# service postgresql-9.4 start

尚、サービス名は以下のコマンドで確認することができます。

# rpm -ql postgresql94-server | grep init.d /etc/rc.d/init.d/postgresql-9.4

サービスの起動時に、以下のようなエラーになってしまう場合、

/var/lib/pgsql/9.4/data is missing. Use 'service postgresql-9.4 initdb' to initialize the cluster first. [失敗]

データベースの初期化が行われていませんので、上記にも記載しているようにデータベースの初期化を行ってください。

PostgreSQLのサービスを自動で起動させる

PostgreSQLのサービスは、インストール時点では自動で起動するようになっていません。

自動起動設定の状態は、以下のコマンドで確認できます。

# chkconfig --list postgresql-9.4 postgresql-9.4 0:off 1:off 2:off 3:off 4:off 5:off 6:off

自動起動する設定になっていない場合、以下のコマンドで自動で起動するように設定できます。

# chkconfig postgresql-9.4 on

自動で起動するように設定した後の状態は、以下のようになります。

# chkconfig --list postgresql-9.4 postgresql-9.4 0:off 1:off 2:on 3:on 4:on 5:on 6:off

自動起動しないようにしたい場合は、以下のコマンドを実行します。

# chkconfig postgresql-9.4 off

PostgreSQLへの接続

PostgreSQLへの接続の認証に関する設定は、PostgreSQLの設定ファイル「/var/lib/pgsql/9.4/data/postgresql.conf」と「/var/lib/pgsql/9.4/data/pg_hba.conf」で行われています。

デフォルトの設定は、以下のようになっています。

「postgresql.conf」の接続の認証に関するデフォルトの設定。

#------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - #listen_addresses = 'localhost' # what IP address(es) to listen on, # comma-separated list of addresses, # defaults to 'localhost', use '*' for all # (change requires restart)
  • 「listen_addresses」は、接続を待ち受けるサーバーのIPアドレスの設定になります。

    未設定の場合は、ローカルのIPアドレス(IPv4では127.0.0.1、IPv6では::1)で接続を待ち受けるようになり、ローカルからの接続のみが可能となります。

「pg_hba.conf」の接続の認証に関するデフォルトの設定。

# TYPE DATABASE USER ADDRESS METHOD # 'local' is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident
  • 「pg_hba.conf」では、「TYPE」(接続形式)、「DATABASE」(接続先のデータベース)、「USER」(データベース接続ユーザー)、「ADDRESS」(接続元のIPアドレス)、「METHOD」(認証方式)を指定して、接続の可否の設定を行います。

  • 「TYPE」に「local」と指定された設定は、Unixドメインソケットを使用した接続になります。

    ここでは、全てのデータベース(「DATABASE」が「all」)、全てのデータベース接続ユーザー(「USER」が「all」)に対する設定となっています。

    認証方式に「peer」と指定すると、ローカルからの接続で、接続元のオペレーティングシステムで使用しているユーザー名が、接続するデータベースのユーザー名と同じになっている場合に、接続が許可されるようになります。

  • 「TYPE」に「host」と指定された設定は、TCP/IPを使用した接続になります。

    「ADDRESS」に「127.0.0.1/32」と指定されている設定は、IPv4でのローカルからの接続によるものになり、「::1/128」と指定されている設定は、IPv6でのローカルからの接続によるものになります。

    IPv4、IPv6共に、全てのデータベース(「DATABASE」が「all」)、全てのデータベース接続ユーザー(「USER」が「all」)に対する設定となっています。

    認証方式に「ident」と指定すると、identサーバー(ポート113)を使用した認証となります。CentOS7.1をMinimalでインストールした場合は、identサーバーは起動されておらず、ident認証では接続できないようです。

PostgreSQLをインストールすると、データベース「postgres」、データベース接続ユーザー「postgres」が作成され、CentOS上にもユーザー「postgres」が作成されます。

よって、PostgreSQLのインストール後の最初の接続は、ローカルからUnixドメインソケットで、ユーザー「postgres」を使用したpeer認証で行うことができます。

接続するには、以下のようなコマンドを実行します。

# su - postgres
$ psql
  • 「su」コマンドで、ユーザーを「postgres」に切り替えます。

    CentOS上のユーザーを「postgres」に切り替えることで、データベース接続ユーザー「postgres」でのpeer認証が可能となります。

  • 「psql」は、PostgreSQLに付属にしているコマンドで、SQLの実行等を行う際に使用するものになります。

    接続先のデータベース、データベース接続ユーザーは共に「postgres」となり、CentOS上のユーザーと同じになるため、オプションでの指定は省略できるようになっています。

    オプションで接続先のデータベースを指定する場合は、「-d postgres」、データベース接続ユーザーを指定する場合は、「-U postgres」となります。

    尚、オプションで接続先のホストを「-h 127.0.0.1」のように指定すると、IPv4での接続となりますが、ident認証は行えないため、接続することはできません。また、接続先のホストを「-h localhost」と指定するとIPv6での接続となりますが、同様にident認証は行えないため、接続することはできません。

postgresユーザーにパスワードを設定

デフォルトでは、postgresユーザーにパスワードが設定されていません。以下のようなステートメントを実行して、パスワードの設定を行うことができます。

postgres=# ALTER ROLE postgres PASSWORD 'xxxxxxxxxx',

※「xxxxxxxxxx」には、設定したいパスワードを指定します。

パスワードの暗号化に関する指定については、当サイトのPostgreSQL データベース接続ユーザーの作成のページをご覧ください。

PostgreSQLへの外部からのアクセスを許可

PostgreSQLへの接続のところでも記載しましたが、PostgreSQLへの接続の認証に関する設定は、PostgreSQLの設定ファイル「/var/lib/pgsql/9.4/data/postgresql.conf」と「/var/lib/pgsql/9.4/data/pg_hba.conf」で行われており、デフォルトではローカルからのUnixドメインソケットを使用した接続のみが可能となっています。

外部からのアクセスを可能とするには、これらを編集します。

「postgresql.conf」を以下のように編集します。

#------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - #listen_addresses = 'localhost' # what IP address(es) to listen on, # comma-separated list of addresses, # defaults to 'localhost', use '*' for all # (change requires restart) ↓変更 listen_addresses = '*' 
  • 「listen_addresses = ‘*’」と指定すると、サーバーに設定されている全てのIPアドレスで接続を待ち受けるようになります。

    サーバーに複数のIPアドレスが設定されている場合、「listen_addresses = ‘192.168.1.11’」のように指定することで、特定のIPアドレスでのみ、接続を待ち受けるようにすることができます。

「pg_hba.conf」を以下のように編集します。

# TYPE DATABASE USER ADDRESS METHOD # 'local' is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 ident ↓変更 host all all 0.0.0.0/0 md5
  • 「TYPE」に「host」と指定された設定は、TCP/IPを使用した接続になります。

  • 「ADDRESS」に「0.0.0.0/0」と指定すると、IPv4の全てのホストからの接続が可能となります。

    尚、「ADDRESS」に「192.168.1.101/32」のように指定することで、特定のIPアドレスからのみ、接続を可能とすることができます。

  • 全てのデータベース(「DATABASE」が「all」)、全てのデータベース接続ユーザー(「USER」が「all」)に対する設定となっています。

    「USER」に「user01」のように指定すると、外部からのアクセスが可能なユーザーを「user01」のみにすることができます。

    この場合も、「TYPE」が「local」の設定により、ローカルからはユーザー「postgres」による接続は可能となります。

  • PostgreSQLへの接続のところでも記載しましたが、認証方式に「ident」を指定していると、接続は行えないようです。

    認証方式に「md5」と指定すると、パスワード認証を使用し、パスワードはMD5でハッシュ化されて送信されるようになります。

    尚、認証方式に「password」と指定した場合も、パスワード認証となりますが、パスワードが平文で送信されますので、セキュリティ面で使用しないほうがよいです。

    また、認証方式に「trust」と指定することで、パスワードの指定なしで接続可能とすることもできます。

また、PostgreSQLへの外部からのアクセスは、iptablesによってデフォルトでは拒否されています。

iptablesによるPostgreSQLへの外部アクセス許可の設定については、当サイトのCentOS6 64bit iptablesによるアクセス制御のページをご覧ください。

データベース接続ユーザーの作成

データベース接続ユーザーの作成については、当サイトのPostgreSQL データベース接続ユーザーの作成のページをご覧ください。

データベースの作成

データベースの作成については、当サイトのPostgreSQL データベースの作成のページをご覧ください。

テーブルの作成

テーブルの作成については、当サイトのPostgreSQL テーブルの作成のページをご覧ください。

実行されたSQLをログに出力

実行されたSQLのログ出力については、当サイトの以下のページをご覧ください。

データベースのバックアップとリストア

データベースのバックアップとリストアについては、当サイトの以下のページをご覧ください。

PostgreSQL9.4.5のインストールについては、以上です。

SQLのテクニックに関するおすすめの書籍

当サイトの書籍紹介ページで、SQLのテクニックに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。

SQLのパフォーマンスに関するおすすめの書籍

当サイトの書籍紹介ページで、SQLのパフォーマンスに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。

DB設計、SQLに関するおすすめの書籍

当サイトの書籍紹介ページで、DB設計、SQLに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。