2018/03/25

[.NET Core]CentOS7にPostgreSQL9.6をインストールして.NET Core用の設定をする


はじめに

CentOS7に PostgreSQL をインストールするのなら、CentOS7のサポート対象の 9.2 か最新バージョンの 10.x になるのでしょうが、ちょっと Amazon RDS for PostgreSQL を使いたいと思っていたら、どちらもサポートされていないのですね。

 Q: Amazon RDS for PostgreSQL でサポートされているデータベースバージョンはどれですか?

現在、Amazon RDS for PostgreSQL では、PostgreSQL 9.3、9.4、9.5、9.6 がサポートされています。サポート対象のマイナーバージョンについての情報は、Amazon RDS ユーザーガイドに記載されています。

https://aws.amazon.com/jp/rds/postgresql/faqs/

 仕方ないので、Amazon RDS がサポートする最新バージョンである PostgreSQL 9.6 の環境を CentOS 7に構築して、.NET Core のデータベースを操作するコンソールアプリケーションが動作するようにします。

PostgreSQL 9.6のインストール

PostgreSQL 9.6 のインストールは、9.6 用のリポジトリをインストールしてから、PostgreSQL をインストールします。

$ sudo yum install -y https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-9.6-3.noarch.rpm
$ sudo yum install -y postgresql96-server postgresql96-contrib postgresql96

インストールが完了したらバージョンを確認します。

$ psql --version
psql (PostgreSQL) 9.6.8

データベースを初期化します。

$ sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
Initializing database ... OK

PostgreSQL を起動します。

$ sudo systemctl start postgresql-9.6.service

OS 起動時に自動的に起動するよう設定します。

$ sudo systemctl enable postgresql-9.6.service

PostgreSQLユーザー設定

PostgreSQL にアクセスするためのユーザー設定を行う必要があります。

.NET Core アプリケーションからアクセスするユーザーを postgres ユーザーだとすると、Linux ユーザーとしてのパスワードを設定する必要があります。

$ sudo passwd postgres

次に、データベースユーザーとしてのパスワードを設定します。

$ su - postgres
$ psql
psql (9.6.8)

postgres=# ALTER USER postgres with encrypted password 'password';

この設定を行ってから、次の PostgreSQL の設定を行わないとログインできなくなるかもしれないのでご注意ください。

 

PostgreSQLの設定

PostgreSQL を .NET Core アプリケーションからアクセス、また PostgreSQL のクライアントツールからアクセスできるよう設定を行います。

rootユーザに切り替え、pg_hba.conf という PostgreSQL の設定ファイルを修正します。これを行わないと、接続文字列を使用して .NET Core でアクセスできません。また、IP アドレスの設定部分(192.168.33.1/32)については、これを行わないとクライアントツールからアクセスができません。IPアドレスはご自身の環境に合わせてください。

$ su -
# cd /var/lib/pgsql/9.6/data
# vi pg_hba.conf

・修正前

# "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

・修正後

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.33.1/32         md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

pg_hba.confの修正が終わったら、次に postgresql.conf の修正を行います。

$ vi postgresql.conf

外部からアクセスできるようにします。

・修正前 

#listen_addresses = ''          # what IP address(es) to listen on;

 

・修正後 

listen_addresses = '*'          # what IP address(es) to listen on;

PostgreSQL を再起動して設定を反映します。

# systemctl restart postgresql-9.6.service
# exit

この設定がうまく行われないと、以下のようなエラーが発生して頭を抱えることになります。💦

Npgsql.PostgresException (0x80004005): 28000: Ident authentication failed for user "postgres"

 

おわりに

PostgreSQL 9.6 をインストールし、 .NET Core アプリケーション用の設定を行いましたが、いかがだったでしょうか。

さらっと書いてみましたが、結構ハマりどころが多いので参考にしてみてください。

 

参考サイト


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。なんちゃってSE。

    フリーウェア、Webサービス開発のためにEntyで支援を受け付けています。ご支援のほどよろしくお願いいたします。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。


    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ
    >>ブログ詳細

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから


最近の記事