在CentOS上安装PostgreSQL后和启动前需要进行初始配置。
出版日期:2020年12月17日。
INFOMARTION > 在CentOS上安装PostgreSQL后和启动前需要进行初始配置。
概述。
这是在CentOS上安装和启动PostgreSQL所需的初始配置程序。 这些信息是基于使用CentOS7的假设。 关于安全的部分也包括在内。
推荐使用PostgreSQL,因为它是免费的,而且功能很强。 我听说PostgreSQL的函数过去很慢,但最近的函数有了改进,速度更快。
版本如下。
CentOS版本 | 7.6 (1810) |
---|---|
PostgreSQL的版本 | 9.2.24 |
目录
- 安装
- 1-1. 安装PostgreSQL
- 设置细节
- 2-1. 创建一个专门的PostgreSQL用户。
- 2-2. PostgreSQL的数据准备
- 2-3. 修改配置文件
- 2-4. 引导性检查
- 2-5. 自动启动设置
- 2-6. 为PostgreSQL添加一个管理用户
- 2-7. 防火墙的钻探
- 摘要
1. 安装
本节描述了安装PostgreSQL的过程。
1-1. 安装PostgreSQL
通过yum命令进行PostgreSQL的安装。 以根用户身份开展工作。
[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postgresql-server
2. 设置细节
本节描述了启动PostgreSQL之前的配置。
2-1. 创建一个专门的PostgreSQL用户。
我想创建一个专门的用户来操作PostgreSQL(使用psql命令),但该用户已经被创建了。 我记得过去创建用户的时候,也许规范已经改变。
尝试用以下命令切换到一个用户。
[root@hostname ~]# su - postgres
由于有些人可能使用的是旧版本的PostgreSQL,应该提到的是,通过改变以下".bashrc "来设置环境变量的程序也不再需要了。
export PGHOME=/var/lib/pgsql
export PGDATA=/var/lib/pgsql/data
export PGHOST=localhost
postgres用户的默认PGDATA现在看来是'/var/lib/pgsql/data'。 它被描述为指向"/usr/lib/systemd/system/postgresql.service"。
2-2. PostgreSQL的数据准备
创建PostgreSQL数据。 编码是UNICODE。 目录"/var/lib/pgsql/data "是默认创建的,但没有创建的人也被要求创建一个文件夹。
-bash-4.2$ initdb --encoding=UNICODE
由于"/usr/lib/systemd/system/postgresql.service "中设置了 "PGDATA=/var/lib/pgsql/data","initdb --encoding=UNICODE "将在"/var/lib/pgsql/"下构建一个数据库。 data/",DB被建立在"/var/lib/pgsql/data/"。
2-3. 修改配置文件
允许 IP 地址访问 PostgreSQL。 设置系统,使其对非本地访问进行密码认证。
[root@hostname ~]# vi /var/lib/pgsql/data/postgresql.conf
修改'postgresql.conf'如下。
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
#listen_addresses = 'localhost' # what IP address(es) to listen on;
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
补充一点,因为这是安全的一个重要部分,如果你把这个设置放进去,你将能够从任何IP访问网站。 如果要访问的IP是固定的,请说明固定IP。
当从安装PostgreSQL的服务器以外的服务器登录时,这个设置是必要的,例如pgadmin。 如果你登录到服务器并运行psql命令,这个设置就没有必要。 (因为该连接来自他自己(localhost))
这是一个重要的安全设置,所以要尽可能地减少可以访问它的用户数量。
然后修改'pg_hba.conf'。
[root@hostname ~]# vi /var/lib/pgsql/data/pg_hba.conf
在文件的末尾添加以下信息。
#来自外部的密码认证。
host all all 0.0.0.0/0 md5
通过包括这一设置,从外部连接时需要一个密码。 这些区域如果没有设置或设置不正确,会成为严重的安全漏洞,所以请以最谨慎的态度设置这些区域。
2-4. 引导性检查
现在预配置已经完成,检查PostgreSQL是否启动。 由于DB是以postgres用户的身份建立的,所以在开始之前切换到postgres用户。
[root@hostname ~]# su - postgres
-bash-4.2$ pg_ctl start
在PostgreSQL成功启动后,检查psql命令的工作是否没有问题。 以postgres用户身份运行psql命令。
-bash-4.2$ psql -l
Database List
Name | Owner | Encoding | Collation Order | Ctype(conversion operator) | Access rights
-----------+----------+------------------+--------------------+----------------------------+-----------------------
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 lines)
如果返回上述结果是可以的。
2-5. 自动启动设置
虽然这不是强制性的,但每次重启服务器时都要启动PostgreSQL是很难的,所以配置成当服务器启动时PostgreSQL自动启动。 它也注册到了systemctl命令。 请注意,这个过程是针对CentOS7的,所以如果你使用的是CentOS7以外的系统,你将需要使用Service命令来处理这个问题。
检查'/usr/lib/systemd/system/postgresql.service'是否存在。 如果没有,使用以下程序创建 "postgresql.service"。 以根用户身份运行。
[root@hostname ~]# touch /etc/systemd/system/postgresql.service
[root@hostname ~]# vi /etc/systemd/system/postgresql.service
以下是提供的信息。
[Unit]
#描述。
Description=PostgreSQL
#执行前和执行后的控制。
#Before=xxx.service
After=network.target
[Service]
#用户和组的指定
User=postgres
Group=postgres
#一旦激活,将状态设为已激活。
Type=oneshot
RemainAfterExit=yes
#启动、停止和重新加载。
Environment=PGDATA=/var/lib/pgsql/data
ExecStart=/usr/bin/pg_ctl start -D /var/lib/pgsql/data
ExecStop=/usr/bin/pg_ctl stop
ExecReload=/usr/bin/pg_ctl reload
[Install]
#运行级别3的同等设置。
WantedBy=multi-user.target
接下来,用systemctl命令注册。
[root@hostname ~]# systemctl enable postgresql
[root@hostname ~]# systemctl is-enabled postgresql
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep postgresql
postgresql.service enabled
[root@hostname ~]# systemctl daemon-reload
2-6. 为PostgreSQL添加一个管理用户
创建一个在PostgreSQL应用程序中使用的用户,与从Linux操作PostgreSQL的用户分开。 这是用pgadmin等操作时的用户。 我想改变默认存在的postgres用户的密码并使用它。
以postgres用户身份运行以下命令。
-bash-4.2$ psql
postgres=# alter role postgres with password '(密码';
postgres=# \q
※在 "密码 "栏中输入你想设置的密码。
2-7. 防火墙的钻探
允许访问PostgreSQL端口,因为防火墙(CentOS6及以前的iptables)在CentOS7上默认只允许ssh访问。 还可以添加 "永久 "选项,使配置永久化。
[root@hostname ~]# firewall-cmd --permanent --zone=public --add-port=5432/tcp
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http https ssh
ports: 8080/tcp 5432/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
如果它显示 "端口:5432/tcp",那就可以了。
通过pgadmin访问。 你应该可以用刚才设置的密码以postgres用户的身份登录。
3. 摘要
我们已经描述了安装PostgreSQL时需要的初始配置。 最初建立PostgreSQL可能会很费劲,所以请参考本节。
谢谢你一直看到最后。