本文尝试在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-common2、如果发现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 restart4、打开防火墙或配置云服务器访问策略
sudo apt install iptables iptables -I INPUT -p tcp --dport 5432 -j ACCEPT iptables-save5、检查结果
一切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
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #Linux #postgresql #远程连接