Ubuntu Server 20.04 LTS 安装配置 PostgreSQL

1 & 环境准备

上面一篇文章我们讲解了在 Windows 环境上面安装 PostgreSQL 的简单介绍,准备环境基本一样。

此处我们安装系统环境是 linux for ubuntu ,所以选择 linux 进入页面,如下所示: 

更多信息请查看 =》 PostgreSQL: Linux downloads (Ubuntu)

2 & Ubuntu Server 安装 PostgerSQL

PostgreSQL 可以从 Ubuntu 主存储库中获取。然而,和许多其它开发工具一样,它可能不是最新版本。

首先在终端中使用 apt 命令 检查 Ubuntu 存储库 中可用的 PostgreSQL 版本 =》# sudo apt show postgresql 

在我的 Ubuntu 20.04 中,它显示 PostgreSQL 的可用版本是 12(12+214 表示版本 12)而 PostgreSQL 版本 13.x 已经发布。

软件发布:2020-09-24

  • PostgreSQL 全球开发组今天宣布 PostgreSQL 13 正式发布, 作为世界上最先进的开源数据库,PostgresSQL 13 是目前的最新版本。
  • PostgreSQL 13 在索引和查找方面进行了重大改进,有利于大型数据库系统,同时包括索引的空间节省和性能提高,使用聚合或分区的查询时的更快响应,使用增强的统计信息时更优化的查询计划,以及很多其他改进。
  • PostgreSQL 13 除了具有强烈要求的功能(如并行清理和增量排序)外,还为不同大小的负载提供了更好的数据管理体验。此版本针对日常管理进行了优化,为应用程序开发人员提供了更多便利,并增强了安全性。
  • "PostgreSQL 13 展示了我们全球社区在增强世界上最先进的开源关系数据库功能方面的协作和奉献精神。"PostgreSQL 核心团队成员 Peter Eisentraut 说, "每个发行版所带来的创新以及其在可靠性和稳定性方面的声誉,这是为什么越来越多的人选择在其应用程序中使用 PostgreSQL 的原因"。
  • PostgreSQL 是一种创新的数据管理系统,以其可靠性和健壮性著称,得益于全球开发者社区 超过25年的开源开发,它已成为各种规模组织首选的开源关系型数据库。

更多 PostgreSQL 13 发布相关信息请查看 =》

根据这些信息,你可以自主决定是安装 Ubuntu 提供的版本还是还是获取 PostgreSQL 的最新发行版。

方法一:通过 Ubuntu 存储库安装 PostgreSQL

在 shell 终端中采用如下命令安装:

sudo apt update
sudo apt install postgresql postgresql-contrib

 根据提示输入你的密码,依据于你的网速情况,程序将在几秒到几分钟安装完成。说到这一点,随时检查 Ubuntu 中的各种网络带宽

什么是 postgresql-contrib ?

  • postgresql-contrib 或者说 contrib 包,包含一些不属于 PostgreSQL 核心包的实用工具和功能。在大多数情况下,最好将 contrib 包与 PostgreSQL 核心一起安装。

方法二:在 Ubuntu 中安装最新版本的 PostgreSQL 13.x

要安装 PostgreSQL 13,你需要在 sources.list 中添加官方 PostgreSQL 存储库和证书,然后从那里安装它。

不用担心,这并不复杂。 只需按照以下步骤:

# 1.创建文件库配置 / Create the file repository configuration:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# 2.导入仓库签名密钥(GPG 密钥) / Import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# 3.更新套餐列表 / Update the package lists:
sudo apt update

# 4.安装最新版本的 PostgreSQL / Install the latest version of PostgreSQL.
# 如果您想要特定的版本,请使用‘PostgreSQL-12’或类似版本代替‘PostgreSQL’ / If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql':
sudo apt -y install postgresql

打印版本信息验证安装

一旦安装完成, PostgreSQL 服务将会自动启动。使用 psql工具通过连接 PostgreSQL 数据库并且打印它的版本来验证安装:

sudo -u postgres psql -c "SELECT version();"

输出如下信息:

 

此时 PostgreSQL 就已经安装好了,你可以开始使用它了。 

PostgreSQL GUI 应用程序/客户端管理界面

你也可以安装用于管理 PostgreSQL 数据库的 GUI 应用程序(pgAdmin):

sudo apt install pgadmin4

3 & PostgreSQL 角色和身份认证方式

PostgreSQL 数据库访问权限是通过角色来处理的。一个角色代表一个数据库用户或者一个数据库用户组。

PostgreSQL 支持多种身份认证方式。最常用的方法如下:

  • Trust - 只要满足 pg_hba.conf 定义的条件,一个角色就可以不使用密码就能连接服务器。
  • Password - 通过密码,一个角色可以连接服务器。密码可以被存储为 scram-sha-256、md5 和 password(明文)。
  • Ident - 仅仅支持 TCP/IP 连接。它通常通过一个可选的用户名映射表,获取客户端操作系统用户名。
  • Peer - 和 Ident 一样,仅仅支持本地连接。

PostgreSQL 客户端身份验证通常被定义在 pg_hba.conf 文件中。默认情况下,对于本地连接,PostgreSQL 被设置成身份认证防范 peer。

3.1 两种方式访问  PostgreSQL 服务器

  • 为了以 postgres 用户身份登录 PostgreSQL 服务器,首先切换用户,然后使用 psql工具访问 PostgreSQL。
# 切换用户
sudo su - postgres
# 进入 PostgreSQL Shell
psql
# 退出 PostgreSQL Shell
\q
  • 你也可以不切换用户,而使用 sudo 命令访问 PostgreSQL。
sudo -u postgres psql

 注:通常 postgres 用户仅应用于本地使用,正式生产环境可以使用 postgres 账户重新创建账户,授权角色信息并指定db数据库;

3.2 PostgreSQL 其他命令

你可以通过执行以下命令来检查 PostgreSQL 是否正在运行 =》# service postgresql status

通过 service 命令,你可以启动、关闭或重启 postgresql。输入 service postgresql 并按回车将列出所有选项。

swskj@swskj-server:~$ service postgresql
Usage: /etc/init.d/postgresql {start|stop|restart|reload|force-reload|status} [version ..]

默认情况下,PostgreSQL 会创建一个拥有所权限的特殊用户 postgres。要实际使用 PostgreSQL,你必须先登录该账户 =》# sudo su postgres

此时提示符会更改为类似于以下的内容:

现在,使用 psql 命令来启动 PostgreSQL Shell,会显示 postgress=# 提示符,如下所示:

输入 \q 以退出,输入 \? 获取帮助,输入 \l 列出所有列表:

查看 psql 工具命令帮助=> \?


你可以使用以下命令更改任何用户(包括 postgres)的密码

ALTER USER postgres WITH PASSWORD 'my_password';

注意:将 postgres 替换为你要更改的用户名,my_password 替换为所需要的密码。另外,不要忘记每条命令后面的 “;(分号)

建议你另外创建一个用户(不建议使用默认的 postgres 用户)。为此,请使用以下命令:

CREATE USER my_user WITH PASSWORD 'my_password';

 刚创建的 my_user 用户没有任何的属性。给它添加超级用户权限:

ALTER USER my_user WITH SUPERUSER;

输入 \du 命令查看 PostgreSQL 用户:

如果创建的用户不想使用,可以使用 DROP 命令删除用户

DROP USER my_user;

要使用其他用户登录,使用 \q 命令退出,然后使用以下命令登录:

psql -U my_user

 可以使用 -d 参数直接连接数据库

psql -U my_user -d my_db

你可以使用其他已存在的用户调用 PostgreSQL。例如,我使用 ubuntu 登录,从终端执行以下命名:

psql -U ubuntu -d postgres

注意:你必须指定一个数据库(默认情况下,它将尝试将你连接到与登录的用户名相同的数据库)。

如果遇到如下错误:

psql: FATAL:  Peer authentication failed for user "my_user"

确保以正确的用户身份登录,并使用管理员权限编辑 /etc/postgresql/13/main/pg_hba.conf

sudo vim /etc/postgresql/13/main/pg_hba.conf

注意:用你的版本替换 13(例如 12)。

对如下所示的一行进行替换:

local   all             postgres                                peer

替换为:

local   all             postgres                                md5

然后重启 PostgreSQL:

sudo service postgresql restart

安装完成后查询相关的包 =》# dpkg -l|grep postg 

以非管理员账户查看: 

psql 控制台命令:除了前面已经用到的 \password命令(设置密码)\q命令(退出)以外,控制台还提供一系列其他命令。

\h:查看SQL命令的解释,比如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。

4 & 创建 PostgreSQL 角色和数据库

  • 仅仅超级用户和拥有CREATEROLE权限的角色可以创建新角色。

在下面的例子中,我们创建一个名称为john的角色,一个名称为johndb的数据库,并且授予数据库上的权限:

# 1.创建一个新的 PostgreSQL 角色
sudo su - postgres -c "createuser john"
# 2.创建一个新的 PostgreSQL 数据库
sudo su - postgres -c "createdb johndb"
# 3.授权用户操作数据库,连接到 PostgreSQL shell
sudo -u postgres psql
# 4.运行下面的 query
grant all privileges on database johndb to john;

5 & 启用远程访问 PostgreSQL 服务器

默认情况下,PostgreSQL 服务器仅仅监听本地网络接口:127.0.0.1

5.1 配置 PostgreSQL 服务器允许远程访问,编辑【postgresql.conf】文件

为了允许远程访问你的 PostgreSQL 服务器,打开配置文件【postgresql.conf】并且在【CONNECTIONS AND AUTHENTICATION】一节添加【listen_addresses = '*'】。

使用如下命令查看【postgresql.conf】配置信息

sudo nano /etc/postgresql/12/main/postgresql.conf

显示如下信息: 

按键盘【上↑下↓箭头】滑动配置文本,并且在【CONNECTIONS AND AUTHENTICATION】一节添加【listen_addresses = '*'】。

保存修改文件,选择【Y Yes】按【Enter】推出,并且重启 PostgreSQL 服务:

sudo service postgresql restart

使用 ss工具验证修改:

ss -nlt | grep 5432

输出显示 PostgreSQL 服务器正在监听所有的网络接口(0.0.0.0),显示如下信息: 

5.2  配置 PostgreSQL 服务器接受远程连接,编辑【pg_hba.conf】文件

下面是一些例子,显示不同的用户场景:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
 
# The user jane can access all databases from all locations using md5 password
host    all             jane            0.0.0.0/0                md5
 
# The user jane can access only the janedb from all locations using md5 password
host    janedb          jane            0.0.0.0/0                md5
 
# The user jane can access all databases from a trusted location (192.168.1.134) without a password
host    all             jane            192.168.1.134            trust

 5.3 配置防火墙开放 PostgreSQL 服务器默认端口【5432

假设你正在使用【UFW/Ubuntu 防火墙】来管理你的防火墙,并且你想允许从【192.168.1.0/24】子网过来的访问,你应该运行下面的命令:

sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432

 此处环境配置的子网掩码是【255.255.0.0/16】所以执行如下命令,这里根据自己实际网络环境配置处理。

确保你的防火墙被配置好,并仅仅接受来自受信任 IP 范围的连接。

以上就是 ubuntu server 20.04 lts 服务器环境安装和配置 postgresql 的简单介绍,欢迎更多的小伙伴安装尝试。

【pgsql 12.6.x 】更多文档请查看 =》PostgreSQL: Documentation: 12: PostgreSQL 12.6 Documentation

猜你喜欢

转载自blog.csdn.net/ChaITSimpleLove/article/details/116129274