CentOS 7にPostgreSQLを導入する
2018-12-20
2018-12-20
こんにちは。今回のテーマは「CentOS 7にPostgreSQLを導入する」です。最近はウェブサービスを公開したこともあり、サーバーサイドの設定をする機会が多くありました。MySQLを使うことが多かったのですが、PostgreSQLを導入する機会がありましたので、備忘録としてまとめておきます。 [adsense02] 【目次】 PostgreSQLのインストール 初期設定 PostgreSQLの起動
PostgreSQLのインストール
以下コマンドでインストールします。
$ sudo yum install postgresql postgresql-server
上記コマンドで以下のパッケージがインストールされます。
- postgresql-server
- postgresql-lib
- postgresql
初期設定
初期設定をして/var/lib/postgres/data/ディレクトリ以降にファイルを生成します。この設定ファイルがないとPostgreSQLが起動しません。また、この設定はpostgresユーザーで行うためにパスワードの設定などを行っていきます。
postgresユーザーのパスワード設定
以下コマンドでpostgresユーザーのパスワードを設定します。
$ sudo passwd postgres
初期設定
postgresユーザーとなり初期設定を行います。
$ su postgres $ postgresql-setup initdb
余談ですが、initdbコマンドは使わないのか?と思われたと思いますが、CentOSでyumでインストールするとshellスクリプトで書かれたpostgresql-setupスクリプトがインストールされます。今回はこのスクリプトを用いて設定します。尚、initdbコマンドを用いる場合は以下のコマンドをpostgresユーザーで実行します。
[postgres] $ initdb —locale $LANG -E UTF8 -D ‘/var/lib/postgres/data’
認証方式を変更する場合
インストールした際の初期設定では認証がpeer方式となっておりシステムのユーザーとPostgreSQLのユーザーの一致が認証時に確認されます。postgresユーザー以外はパスワード認証の方が便利なので方式を変更します。peer方式で困らない方は変更する必要ありません。
$ su postgres [postgres] $ vim /var/lib/pgsql/data/pg_hba.conf
以下のように変更します。-記号が削除、+記号が追記を表しています。
# "local" is for Unix domain socket connections only
- local all all peer
+ local all postgres peer
+ local all all md5
これでpostgresユーザーのみpeerログイン、その他のユーザーはパスワード認証となります。
localhost以外からもアクセスを受け付けるようにする場合
PostgreSQLは初期設定ではlocalhostからしかアクセスできないようになっています。もし他のホストからのアクセスを可能としたい場合は以下の設定を行います。
$ su postgres [postgres] $ vim /var/lib/pgsql/data/postgresql.conf
以下のように変更します。-記号が削除、+記号が追記を表しています。
- #listen\_addresses = 'localhost'
+ listen\_addresses = '\*'
PostgreSQLの起動
設定が完了したのでPostgreSQLを起動していきましょう。CentOS 7はサービス管理にsystemdを用いているので以下コマンドで起動します。
$ sudo systemctl start postgresql
システム起動時に自動でPostgreSQLを立ち上げたい場合は以下のコマンドも追加しておきます。
$ sudo systemctl enable postgresql
以下のコマンドでPostgreSQLのpostgresデータベースにアクセスできればOKです。(まだROLE作成前なのでpostgresユーザーでログインします。)
$ su postgres [postgres] $ psql postgres
最後に
Postgresqlの導入はDebian系のディストロだとセットアップから起動まで自動で行ってくれるのでAPTコマンドにお任せしてしまうのですが、CentOSの場合は手動でのセットアップも自分で行う必要があります。大した手間ではないですが、MySQLと異なる点も多いため、一度まとめておこうと思いました。この記事が何かのお役に立てば幸いです。 【関連記事】 LinuxにphpMyAdminをインストールする方法 [adsense]