ubuntu linux 环境下,PostgreSQL的安装及远程访问配置

本文尝试在ubuntu 18.04的环境中安装最新版本(14.)的PostgreSQL,并且配置远程访问。

一、安装最新版本的PostgreSQL

在一般情况下,ubuntu 18.04默认的存储库中PostgreSQL的版本是10.0的,因此在安装之前需要配置安装源,添加PostgreSQL官方存储库,以便获取到最新版本的PostgreSQL。

1、开始之前,可以通过以下指令检查检查一下ubuntu存储库中可⽤的PostgreSQL 版本:

sudo apt update
sudo apt -y upgrade

apt show postgresql

结果大概是这样的:

Package: postgresql
Version: 10+190
Priority: optional
Section: database
Source: postgresql-common

2、如果发现ubuntu存储库中的PostgreSQL不是最新的,或是我们需要的,那么就需要通过以下指令来添加PostgreSQL官方存储库:

#创建文件存储库配置
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
#导入存储库签名密钥
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
#更新包列表
sudo apt update
#安装最新版本的PostgreSQL。
#如果需要特定版本,请使用“postgresql-14”或类似版本,而不是“postgresql”:
sudo apt -y install postgresql-14
 
## 等待安装过程....

3、安装完毕后,切换到PostgreSQL创建的linux账户下,查看安装结果:

# su postgres
$ psql --version

出现类似结果时,表明PostgreSQL已经安装成功。

psql (PostgreSQL) 14.3 (Ubuntu 14.3-1.pgdg18.04+1)

二、配置PostgreSQL远程访问

接下来要开放远程访问PostgreSQL需要修改权限配置文件pg_hba.conf、配置PostgreSQL参数postgresql.conf,重启PostgreSQL服务,同时不要忘了打开防火墙或在云服务器控制台在打开5432端口。

1、使用postgres账户修改pg_hba.conf

$ vi /etc/postgresql/14/main/pg_hba.conf

打开文件后找到以下配置内容:

# Database administrative login by Unix domain socket
local   all             postgres                             md5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                  md5
# IPv4 local connections:
host    all             all             0.0.0.0/0            md5

修改 local及host最后的部分,其值可以是 peer(为等同使用当前postgres linux账户)、trust(为无密码)、md5(为使用md5加密密码)、scram-sha-256(为使用sha-256加密密码),一般情况下,local一行可以保持peer(当应用程序希望通过localhost使用密码访问PostgreSQL服务时,可以考虑设置为md5或sha-256),而host一行可以设置为md5或sha-256。

2、使用postgres账户修改postgresql.conf

$ vi /etc/postgresql/14/main/postgresql.conf

打开文件后找到以下配置内容:
 

data_directory = '/var/lib/postgresql/14/main'          
hba_file = '/etc/postgresql/14/main/pg_hba.conf'
listen_addresses = '*' # localhost
port = 5432

修改listen_addresses为‘*’,使得外网可以可以访问PostgreSQL服务,当然也可以根据自己的实际需要修改port参数。

3、重启PostgreSQL服务

完成以上配置后,需要重启PostgreSQL服务才能使其生效。这时需要使用exit指令,退出postgres账户,回到linux管理员账户下,使用以下指令重启服务:

systemctl restart postgresql 

如果服务列表中找不到postgresql时,可以使用:

/etc/init.d/postgresql restart

4、打开防火墙或配置云服务器访问策略

sudo apt install iptables

iptables -I INPUT -p tcp --dport 5432 -j ACCEPT

iptables-save

5、检查结果

一切ok,这时你可以通过以下指令来访问PostgreSQL数据库:

psql -U postgres -h8.8.8.8 -p5432 -d postgres

-U:用来设置连接PostgreSQL的用户名

-h:用来设置PostgreSQL数据库服务器监听的IP地址

-p:用来设置监听端口信息

-d:用来设置PostgreSQL远程连接的database

另外PostgreSQL还支持pgsql+URL的方式进行连接:

psql postgresql://$username:$password@$hostip:$port/$dbname

三、修改PostgreSQL用户密码

在PostgreSQL默认的安装过程中,postgres用户的默认密码为空,这时就需要在PostgreSQL安装完成后,重新设置其密码。这时可以通过以下两种方式修改postgres的密码:
1、使用postgres登录PostgreSQL数据库,使用SQL指令来修改密码。

ALTER USER postgres WITH PASSWORD 'your pwd';

2、通过linux指令来修改postgres账户密码

$ sudo passwd -d postgres

$ sudo -u postgres passwd
New password:
Retype new password:
passwd: all authentication tokens updated successfully

四、卸载老版本的PostgreSQL

如果你的ubuntu服务器可能已经存在老版本的PostgreSQL,你可以通过以下指令来查看其版本:

# postgres方式
$  postgres --version

# pg_config方式
$  pg_config|grep VERSION

# pg_controldata方式
pg_controldata --version

如果你要在安装新版本前卸载原来的PostgreSQL,请首先做好数据备份,然后通过下列指令来卸载老版本的PostgreSQL:

# 删除相关安装
$ sudo apt-get --purge remove postgresql\*

# 删除配置及相关文件
$ sudo rm -r /etc/postgresql/
$ sudo rm -r /etc/postgresql-common/
$ sudo rm -r /var/lib/postgresql/

# 删除用户和所有组
$ sudo userdel -r postgres
$ sudo groupdel postgres

你可能感兴趣的:(Get,Start,postgresql,ubuntu,linux)