環境
# 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
ユーザアカウントで設定と動作テストを行う。
- 18.1. The PostgreSQL User Account: ポスグレ本家(英語)|旧版の和訳: JPUG
インストール
インストール済みの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
で保存・終了。
- 16.5. Post-Installation Setup: ポスグレ本家(英語)|旧版の和訳: JPUG
設定を反映
$ . ~/.bash_profile
$ printenv PGDATA
/var/lib/pgsql/11/data
データベースクラスタを初期化
$ initdb --no-locale -D "$PGDATA"
-
--no-locale
オプション: ロケールを使用しない(推奨) - 18.2. Creating a Database Cluster: ポスグレ本家(英語)|旧版の和訳: JPUG
データベースサーバを起動し、現行のデータベースクラスタを確認
$ 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
- 18.3. Starting the Database Server: ポスグレ本家(英語)|旧版の和訳: JPUG
- 22.3. Template Databases: ポスグレ本家(英語)|旧版の和訳: JPUG
- 68.1. Database File Layout: ポスグレ本家(英語)|旧版の和訳: JPUG
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!
- Chapter 2. The SQL Language: ポスグレ本家(英語)|旧版の和訳: JPUG
ログアウト
$ logout
参考
-
PostgreSQL 本家(英語)
- PostgreSQL 11.1 Documentation: ポスグレ本家(英語)
-
日本PostgreSQLユーザ会(JPUG)
- PostgreSQL 10.5文書: JPUG