文章目录
- 前言
- 1. 安装步骤
- 2. 连接PostgreSQL
- 3. 配置服务
-
- 配置文件所在路径
- 设置监听地址
- 修改数据库密码
- 已经修改了密码,为什么没有生效?不需要密码就可以连接?
- 设置访问权限
- 4. 新的配置生效
前言
PostgreSQL是一种功能强大的开源关系型数据库管理系统,被广泛用于各种应用程序和网站的数据存储和管理。本文将介绍在CentOS 7.9上安装和配置PostgreSQL 12的步骤。
1. 安装步骤
- 添加PostgreSQL软件包的官方存储库。打开终端并使用root权限执行以下命令:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- 安装PostgreSQL 12服务器和客户端软件包。执行以下命令:
sudo yum install -y postgresql12-server postgresql12
- 初始化数据库。执行以下命令:
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
- 启动PostgreSQL服务并设置开机自启。执行以下命令:
sudo systemctl start postgresql-12 sudo systemctl enable postgresql-12
- 验证安装是否成功。执行以下命令:
sudo systemctl status postgresql-12
如果状态显示为"active (running)",则表示安装成功。
现在,你已经成功安装了PostgreSQL 12。
2. 连接PostgreSQL
sudo -u postgres psql
输入
3. 配置服务
配置文件所在路径
你使用
具体来说,
另外,还有一个名为
请注意,
如果你无法找到配置文件,可以尝试使用以下命令来查找:
sudo find / -name postgresql.conf
这将在整个系统中搜索
设置监听地址
修改/var/lib/pgsql/12/data目录下postgresql.conf文件,该文件配置PostgreSQL数据库服务器的相应的参数。
cd /var/lib/pgsql/12/data vi postgresql.conf
参数
#------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - listen_addresses = '*' # 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) max_connections = 100 # (change requires restart)
提示:vi进入编辑文件之后,点击
修改数据库密码
使用root用户或具有sudo权限的用户切换到postgres用户,并进入PostgreSQL命令行界面:
sudo -u postgres psql
在PostgreSQL命令行中,使用以下命令修改密码:
ALTER USER postgres WITH PASSWORD 'new_password';
已经修改了密码,为什么没有生效?不需要密码就可以连接?
如果已经修改了PostgreSQL用户(例如postgres)的密码,但仍然可以无需密码连接到数据库,可能有几个原因:
-
验证方法:请确保您在连接数据库时使用了正确的验证方法。默认情况下,PostgreSQL使用"ident"作为验证方法,此方法使用操作系统的标识验证机制。它依赖于操作系统的用户和组标识来验证用户的身份,当客户端连接到数据库时,PostgreSQL会检查客户端的操作系统用户和数据库用户是否匹配。如果匹配,则允许连接,否则拒绝连接。
-
配置文件:检查PostgreSQL的配置文件,通常是
postgresql.conf 和pg_hba.conf 。确保pg_hba.conf 中为您的用户(例如postgres)配置了正确的身份验证方法,并且要求提供密码。
也可能验证方法设置了
设置访问权限
修改/var/lib/pgsql/12/data目录下pg_hba.conf 文件,该文件配置对数据库的访问权限。
vi pg_hba.conf
设置使用MD5哈希算法对密码进行加密:
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. local replication all md5 host replication all 127.0.0.1/32 md5 host replication all ::1/128 md5
添加以下配置,即可在所有客户端连接服务器的数据库:
host all all 0.0.0.0/0 md5
若是设置某一台主机可连接,比如IP地址为 192.168.0.45:
host all all 192.168.0.45/32 md5
若是设置某个局域网可连接,前2个网段固定,比如IP地址为 192.168.xxx.xxx:
host all all 192.168.0.0/16 md5
若是设置某个局域网可连接,前3个网段固定,比如IP地址为 192.168.1.xxx:
host all all 192.168.1.0/24 md5
在PostgreSQL的pg_hba.conf配置文件中,METHOD字段用于指定身份验证方法。以下是一些常见的密码类型及其特点:
-
trust:此方法允许任何用户以任何方式连接到数据库,而无需进行身份验证。这是最不安全的方法,因为它不需要密码。
-
reject:此方法拒绝所有连接尝试,无论用户提供的凭据如何。
-
md5:此方法使用MD5哈希算法对密码进行加密,并将加密后的密码与数据库中存储的密码进行比较。这是一种相对安全的方法,因为密码在传输过程中是加密的。
-
scram-sha-256:此方法使用SCRAM-SHA-256算法对密码进行加密,并将加密后的密码与数据库中存储的密码进行比较。与MD5相比,SCRAM-SHA-256提供了更强的安全性。
-
password:此方法以明文形式发送密码,不进行加密。这是最不安全的方法,不建议在生产环境中使用。
-
ident:此方法使用操作系统的标识验证机制。它依赖于操作系统的用户和组标识来验证用户的身份。当客户端连接到数据库时,PostgreSQL会检查客户端的操作系统用户和数据库用户是否匹配。如果匹配,则允许连接,否则拒绝连接。
-
peer:此方法类似于ident方法,但它只验证客户端的操作系统用户,而不验证数据库用户。当客户端连接到数据库时,PostgreSQL会检查客户端的操作系统用户是否与数据库用户匹配。如果匹配,则允许连接,否则拒绝连接。
-
gss、sspi、pam、ldap、radius、cert:这些方法是基于不同的身份验证协议或机制,如GSSAPI、SSPI、PAM、LDAP、RADIUS和证书验证。它们提供了不同的身份验证方式,具体取决于系统配置和需求。
总的来说,"md5"和"scram-sha-256"是较为安全的密码类型,因为它们在传输过程中对密码进行了加密。而"trust"和"password"是较不安全的密码类型,因为它们不对密码进行加密。在生产环境中,建议使用"md5"或"scram-sha-256"来保护数据库的安全性。
4. 新的配置生效
在 CentOS 7.9 上修改 PostgreSQL (psql) 的配置后,你需要重新加载或重启 PostgreSQL 服务才能使配置生效。以下是两种方法:
- 重新加载配置:
sudo systemctl reload postgresql
这将重新加载 PostgreSQL 服务的配置文件,使新的配置生效,重新加载配置文件不会中断正在进行的连接。
- 重启 PostgreSQL 服务:
sudo systemctl restart postgresql
这将停止并重新启动 PostgreSQL 服务,使新的配置生效。