PostgreSQL
■ インストール
やはり便利なのでyumを使ってインストールします。
yumのベースリポジトリにあるpostgreSQLはバージョンが古かったです。
$ yum list | grep postgresql-server
postgresql-server.x86_64 9.2.24-1.el7_5 base
なので最新のバージョンのリポジトリを追加してインストールします。
# pgdg96リポジトリを追加する
$ sudo yum install -y https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-9.6-3.noarch.rpm
# PostgreSQLサーバーをインストールする
$ sudo yum install -y postgresql96-server postgresql96-contrib
# バージョンの確認
$ psql -V
psql (PostgreSQL) 9.6.12
参考:CentOS7.3にPostgreSQL9.6.3をインストールしてみた
■ データベース作成と起動
スーパーユーザの作成
データベースの管理をすることになるスーパーユーザの作成を行います。
# ユーザの追加
$ sudo useradd postgres
$ sudo passwd postgres
データベースクラスタの作成
データベースの格納領域であるデータベースクラスタを作成します。
/home/postgres/data
はデータベースクラスタを作成するディレクトリです。
方法①
# postageユーザに切り替え
$ su postage
# データベースクラスタの作成
$ initdb -D /home/postgres/data --encoding=UTF8 --no-locale
※initdb
を実行したユーザがデータベースクラスタの管理ユーザとして設定(ディレクトリの権限・所有者も変更されます)され、また同名のデータベースユーザが初期ユーザとして作成されます。
方法②
この作業は実は下記コマンドでも行うことができます。その方がディレクトリの準備とかしなくて良いしラクかもしれません。
# データベースの初期化処理を行う
$ sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
※この場合、データベースクラスタのディレクトリはデフォルトで/var/lib/pgsql/9.6/data
になっているので注意してください。
※この方法でデータベースクラスタを作成した場合は、データベースの初期ユーザとしてpostgres
が作成されています。
PATHを通す
- 環境変数
PATH
に/usr/pgsql-9.6/bin
を追加します。 - 環境変数
LD_LIBRARY_PATH
に/usr/pgsql-9.6/lib
を定義します。 - 環境変数
PGDATA
に/home/postgres/data
を定義。※これをすることで、毎回-D /home/postgres/data
とデータベースクラスタのディレクトリを指定しなくても良くなります。
PostgreSQLサーバの起動
方法①
pg_ctlコマンドを使ってPostgreSQLを管理します。
# PostgreSQLサーバの起動
$ pg_ctl start -w
# PostgreSQLサーバの終了
$ pg_ctl stop
※自動起動設定をするには、スクリプトを書く必要があるようです。
方法②
mysqlと同じようにsystemdを使ってPostgreSQLの起動・終了を行うことができます。
systemdを利用することにより自動起動設定も超ラクに出来るので、使わない手は無いと思います。
# 起動
$ systemctl start postgresql-9.6.service
# 自動起動設定
$ systemctl enable postgresql-9.6.service
# 終了
$ systemctl stop postgresql-9.6.service
mysqlと完全に一緒ですね。
■ データベース接続とデータの作成
データベースユーザの作成
データベース一覧を表示するpsql -l
を実行したところ、roleが存在しないのでアクセスできませんでした。
# データベース一覧を表示
$ psql -l
psql: FATAL: role "vagrant" does not exist
方法①
# postgresユーザに切り替え
$ su postgres
# ユーザの作成
$ createuser -d -U postgres -P {ユーザ名}
※createuser
は対話式でもユーザの作成が出来るらしいんですけど、上手く実行できませんでした…
方法②
postgres
ユーザでデータベースにログインしてユーザを作成する場合は下記で行う。
$ psql
psql (9.6.12)
postgres=# create role vagrant login createdb password 'vagrant';
データベースへのログイン
続く…