虚拟机Linux安装PostgreSQL,并让宿主机连接

Posted 詩和遠方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟机Linux安装PostgreSQL,并让宿主机连接相关的知识,希望对你有一定的参考价值。

安装PostgreSQL

运行如下命令进行安装:

sudo apt-get install postgresql

Linux本地登陆并修改密码

安装完成之后,Linux会自动创建postgres同名账户,用此账号可直接免密登陆PostgreSQL(类似于SQL Server的Windows账号认证方式):

sudo -u postgres psql

然后可以用 \\password命令更新密码,用于之后的远程连接。
更新之后,就可以密码的方式登陆,例如:

psql -U postgres -d postgres -h 127.0.0.1 -p 5432 # 提示输入密码,输入后登陆到psql
psql -help # 显示帮助
psql -l # 显示数据库列表然后退出

连接到具体的PostgreSQL之后,可用 \\? 显示 psql shell 命令帮助,常用命令如下:
\\password:设置密码
\\q:退出
\\h:查看SQL命令的解释,比如\\h select。
?:查看psql命令列表。
\\l:列出所有数据库。
\\c [database_name]:连接其他数据库。
\\d:列出当前数据库的所有对象,如Table,View等。
\\dt: 列出当前数据库的所有Table。
\\d [table_name]:列出某一张表格的结构。
\\du:列出所有用户。
\\e:打开文本编辑器。
\\conninfo:列出当前数据库和连接的信息。

配置允许远程连接

以下10.0版本为例,配置为最大连接权限,若项目中用到请以实际安全策略为准。

  • 修改监听
sudo vi /etc/postgresql/10/main/postgresql.conf 

将 #listen_addresses = ‘localhost’ 的注释去掉并改为 listen_addresses = ‘*’

  • 修改可访问用户的IP段
sudo vi /etc/postgresql/10/main/pg_hba.conf 

在文件末尾添加: host all all 0.0.0.0 0.0.0.0 md5 ,表示允许任何IP连接

  • 重启数据库
sudo /etc/init.d/postgresql restart

开启5432端口

上述允许远程连接的设置仅是postgre的设置,真正要让外部可连接,OS层也要设置,即开启相应端口,postgre默认用tcp 5432 端口进行连接,故开启5432端口即可:

# 若 firewalld 未安装,则先进行安装: sudo apt install firewalld
# 允许 tcp 5432 端口
sudo firewall-cmd --permanent --add-port=5432/tcp
# reload 防火墙,应用规则
sudo systemctl reload firewalld

配置宿主机连接PostgreSQL

  • 若虚拟机用桥接方式连网,则根据虚拟机IP,可用密码正常连即可
  • 若用NAT方式,需要配置端口转发,配置示例如下所示:

连接测试

配置好之后,用WorkBench/J测试,连接成功:

以上是关于虚拟机Linux安装PostgreSQL,并让宿主机连接的主要内容,如果未能解决你的问题,请参考以下文章

linux安装

宿主机Windows访问虚拟机Linux文件

宿主机共享文件夹给不同Linux虚拟机的方法

vmware linux虚拟机怎么挂载共享的文件夹

kali linux宿主机和虚拟机互访实现方案

Linux虚拟机中的IP与宿主机IP不一样,但是能上网能ping通宿主机IP,但是我改成与宿主机一个网段就不行了