LoginSignup
3
3

More than 5 years have passed since last update.

CentOS-Linux-7にPostgreSQL 11をインストールしてみた

Posted at

環境

# cat /etc/redhat-release; arch; locale | head -n1; users
CentOS Linux release 7.6.1810 (Core) 
x86_64
LANG=ja_JP.utf8
root root

段取り

rootユーザアカウントでインストールを行い、それによって自動生成されるpostgresユーザアカウントで設定と動作テストを行う。

インストール

インストール済みのPostgreSQLがあれば削除

# yum list installed | grep postgres
# yum remove postgresql postgresql-libs postgresql-server
# userdel -r postgres

yumリポジトリ設定をインストール

# rpm -ivh https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm

PostgreSQL11をインストール

# yum install postgresql11 postgresql11-libs postgresql11-server
...
完了しました!
# psql --version
psql (PostgreSQL) 11.1

設定と動作テスト

データベースサーバ自動起動設定

# systemctl enable postgresql-11.service
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-11.service to /usr/lib/systemd/system/postgresql-11.service.
# systemctl list-unit-files -t service | grep postgres
postgresql-11.service                         enabled

postgresユーザアカウントが登録済みか確認

# cut -d: -f1 /etc/passwd | grep postgres
postgres

postgresユーザアカウントにログイン

# su - postgres

環境変数

$ vim -c 'start|:set number|:2' ~/.bash_profile
~/.bash_profile
- PGDATA=/var/lib/pgsql/11/data
+ PGCLUSTER=11/data
+ PGHOME=/usr/pgsql-${PGCLUSTER%%\/*}
+ export PATH=$PGHOME/bin:$PATH
+ export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
+ export MANPATH=$PGHOME/share/man:$MANPATH
+ PGDATA=/var/lib/pgsql/$PGCLUSTER

-(2行目)を+に置き換え、[ESC]キー→:wqで保存・終了。

設定を反映

$ . ~/.bash_profile
$ printenv PGDATA
/var/lib/pgsql/11/data

データベースクラスタを初期化

$ initdb --no-locale -D "$PGDATA"

データベースサーバを起動し、現行のデータベースクラスタを確認

$ pg_ctl start
...
サーバ起動完了
$ psql -l
                                        データベース一覧
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |     アクセス権限      
-----------+----------+------------------+----------+-------------------+-----------------------
 postgres  | postgres | SQL_ASCII        | C        | C                 | 
 template0 | postgres | SQL_ASCII        | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
 template1 | postgres | SQL_ASCII        | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
(3 行)

$ ls "$PGDATA"
PG_VERSION        pg_commit_ts   pg_multixact  pg_stat      pg_wal                postmaster.pid
base              pg_dynshmem    pg_notify     pg_stat_tmp  pg_xact
current_logfiles  pg_hba.conf    pg_replslot   pg_subtrans  postgresql.auto.conf
global            pg_ident.conf  pg_serial     pg_tblspc    postgresql.conf
log               pg_logical     pg_snapshots  pg_twophase  postmaster.opts

Hello, World! 印字テスト

スクリプトなし

$ psql -t -A -c "SELECT 'Hello, World! '"
Hello, World!

スクリプトあり

$ vim -c 'start|:set number' ~/hello.sql
~/hello.sql
-- -*- mode: sql; sql-product: postgres; -*-
SELECT 'Hello, World!';

上記の通り入力し、[ESC]キー→:wqで保存・終了。

パターン1

$ psql -t -A < ~/hello.sql
Hello, World!

パターン2

$ psql -t -A -f ~/hello.sql
Hello, World!

ログアウト

$ logout

参考

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3