通过yum工具,你可以在CentOS操作系统上安装PostgreSQL-9.6
目的和背景 hé
由于安装步骤分散在各处,我希望有一份整合了的安装手册。
此文件所涵盖的主题
-
- CentOS 7.5 (systemd)
- Postgresql 9.6 (CentOS公式は9.2)
安装
将 yum 仓库进行注册
请在https://yum.postgresql.org/repopackages.php选择适合的仓库,然后执行yum install <选择的RPM的URL>
$ sudo yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
(中略)
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
pgdg-centos96 noarch 9.6-3 /pgdg-centos96-9.6-3.noarch 2.7 k
Transaction Summary
================================================================================
Install 1 Package
Total size: 2.7 k
Installed size: 2.7 k
Is this ok [y/d/N]: y
(中略)
Installed:
pgdg-centos96.noarch 0:9.6-3
Complete!
安装目标软件包。
$ sudo yum install postgresql96-server
(中略)
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
postgresql96-server x86_64 9.6.9-1PGDG.rhel7 pgdg96 4.3 M
Installing for dependencies:
postgresql96 x86_64 9.6.9-1PGDG.rhel7 pgdg96 1.4 M
postgresql96-libs x86_64 9.6.9-1PGDG.rhel7 pgdg96 315 k
Transaction Summary
================================================================================
Install 1 Package (+2 Dependent packages)
Total download size: 6.0 M
Installed size: 26 M
Is this ok [y/d/N]: y
(中略)
Installed:
postgresql96-server.x86_64 0:9.6.9-1PGDG.rhel7
Dependency Installed:
postgresql96.x86_64 0:9.6.9-1PGDG.rhel7
postgresql96-libs.x86_64 0:9.6.9-1PGDG.rhel7
Complete!
进行初始设置
执行数据库的初始化操作
$ sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
Initializing database ... OK
打开端口(可选)
如果您想要从外部访问PostgreSQL端口,请按照以下步骤进行操作。
聆听”アドレス”的配置
确保对所有IP地址进行接收。
$ sudo vi /var/lib/pgsql/9.6/data/postgresql.conf
请打开上述设定文件,添加listen_addresses = ‘*’。
# - Connection Settings -
+listen_addresses = '*'
#listen_addresses = 'localhost' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432 # (change requires restart)
配置受信许可地址
$ sudo vi /var/lib/pgsql/9.6/data/pg_hba.conf
以下是允许来自所有IPv4地址的连接。
# IPv4 local connections:
-host all all 127.0.0.1/32 ident
+#host all all 127.0.0.1/32 ident
+host all all 0.0.0.0/0 md5
# IPv6 local connections:
打开防火墙端口
如果PostgreSQL的端口设置为默认值,则可以使用以下命令打开端口。
$ sudo firewall-cmd --add-service=postgresql --zone=public --permanent
success
$ sudo firewall-cmd --reload
success
服务启动
进行对systemd的注册
由于准备工作已经完成,那么首先要让postgresql处于可用状态。
$ sudo systemctl daemon-reload
$ sudo systemctl enable postgresql-9.6.service
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-9.6.service to /usr/lib/systemd/system/postgresql-9.6.service.
开始服务
$ sudo systemctl start postgresql-9.6
[da@centos2 ~]$ sudo systemctl status postgresql-9.6
● postgresql-9.6.service - PostgreSQL 9.6 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-9.6.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2018-07-17 12:35:35 EDT; 5s ago
(中略)
Jul 17 12:35:35 centos2 systemd[1]: Started PostgreSQL 9.6 database server.
Hint: Some lines were ellipsized, use -l to show in full
登录
进行登录设置
用postgres用户从psql访问并创建数据库并设置访问权限。
$ sudo -u postgres /usr/pgsql-9.6/bin/psql -U postgres
psql (9.6.9)
Type "help" for help.
postgres=# --ユーザー作成(注意:testというパスワードのため、そのまま使用しないこと)
postgres=# CREATE ROLE test WITH LOGIN PASSWORD 'test';
CREATE ROLE
postgres=# --DBの作成
postgres=# CREATE DATABASE test;
CREATE DATABASE
postgres=# --DBの所有権を移転
postgres=# ALTER DATABASE test OWNER TO test;
ALTER DATABASE
postgres=# --作業完了
postgres=# \q
进行登录确认(在本地服务器上)
# 以下の192.168.1.2はサーバーのIPアドレスを指定すること
$ /usr/pgsql-9.6/bin/psql -h 192.168.1.2 -U test
Password for user test:
psql (9.6.9)
Type "help" for help.
test=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
test | test | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)
故障排查
服务无法启动。
请按照指示执行journalctl -xe命令。
如果提示”/var/lib/pgsql/9.6/data/”目录不存在或为空,请参阅”执行数据库初始化”一节。
文献引用
-
- yumでPostgreSQLをインストールしてみよう
-
- PostgreSQLでユーザー(ロール)を追加してテーブルにアクセスする
-
- CentOS7でポートを開放する方法
- yum でインストールされるドキュメント: /usr/share/doc/postgresql96-9.6.9/README.rpm-dist