如何在Ubuntu、CentOS和Windows上安装PostgreSQL?
PostgreSQL是一种流行的、跨平台的、开源的面向对象关系数据库系统,具有强大的性能和可靠性,并拥有一个庞大的社区。
它可以追溯到1986年,作为加州大学伯克利分校的POSTGRES项目的一部分,并且在其核心平台上进行了30年的积极开发。多年来,它始终保持着稳定的性能,证明了它在企业使用中的完整性、架构和可扩展性。它符合ACID,并提供对流行的PostGIS地理空间数据库扩展程序的支持。
本文将介绍在常见平台上安装PostgreSQL。
那么,让我们开始吧。
Ubuntu
PostgreSQL适用于所有版本和版本的Ubuntu。您可以选择安装和使用Ubuntu默认支持的版本,该版本将在其生命周期内得到支持,或者您可以添加PostgreSQL存储库并安装特定版本。我们将在此处介绍这两个选项。
要使用Ubuntu存储库提供的默认支持版本,请运行以下命令:
$ sudo apt-get update
$ sudo apt-get -y install postgresql
PostgreSQL Apt存储库支持Ubuntu的当前LTS版本,即20.04
、18.04
和16.04
。虽然可能不完全支持,但相同的软件包也适用于非LTS版本,只需使用最接近的LTS版本。
要使用PostgreSQL apt存储库,请按照以下步骤操作:
$ 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-get update
$ sudo apt-get -y install postgresql
要从PostgreSQL存储库安装特定版本,而不仅仅是postgresql
(表示最新版本),请像postgresql-12
一样指定版本:
$ sudo apt-get -y install postgresql-12
存储库还包含不同的软件包,包括第三方扩展。例如,PostgreSQL 12的常见可用软件包包括:
postgresql-client-12 | 客户端库和客户端可执行文件 |
---|---|
postgresql-12 | 核心数据库服务器 |
postgresql-contrib-9.x | 附加的供应模块(在版本10及更高版本的postgresql-xx软件包中) |
libpq-dev | C语言前端开发的库和头文件 |
postgresql-server-dev-12 | C语言后端开发的库和头文件 |
pgadmin4 | pgAdmin 4图形管理实用程序 |
安装完成后,可以使用以下命令检查DB服务的状态:
$ sudo systemctl status postgresql.service
对于Ubuntu,在安装后,服务应该已启用并正在运行,如:
$ sudo systemctl status postgresql.service
● postgresql.service - PostgreSQL关系型数据库管理系统
已加载: 已加载 (/lib/systemd/system/postgresql.service; 已启用; 厂商预设值: 已启用)
活动状态: 活动(已退出)自 2021-06-06 16:06:45 UTC; 46s 前
主 PID: 3364 (代码=已退出, 状态=0/成功)
任务: 0 (限制: 1113)
内存: 0B
CGroup: /system.slice/postgresql.service
6月 06 16:06:45 ubuntu20cloud systemd[1]: 正在启动 PostgreSQL关系型数据库管理系统...
6月 06 16:06:45 ubuntu20cloud systemd[1]: 已完成 PostgreSQL关系型数据库管理系统的设置。
$
CentOS
与Ubuntu一样,RHEL/CentOS仓库中也包含特定版本的PostgreSQL,该版本将在操作系统的整个生命周期中得到支持。您可以使用以下命令进行安装:
$ sudo yum install -y postgresql-server
或者如果使用CentOS 8,则可以使用 DNF 进行安装。
$ sudo dnf install -y postgresql-server
安装后运行以下命令以初始化数据库、启用PostgreSQL服务并启动它:
$ sudo postgresql-setup initdb
$ sudo systemctl enable postgresql.service
$ sudo systemctl start postgresql.service
或者,要直接从 PostgreSQL yum仓库 使用软件包,我们需要添加以下仓库:
$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
然后,要安装特定版本的PostgreSQL(如版本13,在编写本文时是最新稳定版),请使用:
$ sudo yum install -y postgresql13-server
yum仓库还包含其他一些重要的PostgreSQL软件包,其中一些列在下面:
postgresql-client | 库和客户端二进制文件 |
---|---|
postgresql-server | 核心数据库服务器 |
postgresql-contrib | 附加的供应模块 |
postgresql-devel | C语言开发所需的库和头文件 |
安装后运行以下步骤以初始化数据库、启用PostgreSQL服务并启动它:
$ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
$ sudo systemctl enable postgresql-13
$ sudo systemctl start postgresql-13
您可以使用以下命令查看数据库服务的状态:
$ sudo systemctl status postgresql.service
● postgresql.service - PostgreSQL数据库服务器
已加载: 已加载 (/usr/lib/systemd/system/postgresql.service; 已启用; 厂商预设值: 已禁用)
活动状态: 活动(运行中)自 2021-06-06 16:39:35 GMT; 1 分钟 12 秒前
进程: 7011 ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (代码=已退出, 状态=0/成功)
进程: 7005 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (代码=已退出, 状态=0/成功)
CGroup: /system.slice/postgresql.service
├─7014 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432
├─7015 postgres: logger 进程
├─7017 postgres: checkpointer 进程
├─7018 postgres: writer 进程
├─7019 postgres: wal writer 进程
├─7020 postgres: autovacuum launcher 进程
└─7021 postgres: stats collector 进程
6月 06 16:39:34 centos7cloud systemd[1]: 正在启动 PostgreSQL数据库服务器...
6月 06 16:39:35 centos7cloud systemd[1]: 已启动 PostgreSQL数据库服务器。
$
Windows
Windows 32位和64位的安装程序可以从官方的PostgreSQL网站 here 下载。
- 您可以根据所需的版本和体系结构下载适用的二进制文件。
- 我们将下载最新版本,即Windows 64位平台的v13.3。下载完成后,双击启动安装程序。
- 点击“下一步”继续。
- 点击“下一步”继续使用默认路径,或者指定自定义安装路径。
- 您可以保留默认组件的选择,然后点击“下一步”继续。
- 接下来,它要求指定数据目录位置;除非您有单独的专用磁盘或目录分配给它,否则可以保留默认值。点击“下一步”继续。
- 设置一个强密码给
postgres
用户。完成后点击“下一步”。
- 默认端口
5432
对于大多数情况都可以使用。点击“下一步”进入下一页。
- 选择数据库的语言环境,然后点击“下一步”继续。
- 安装向导的所有选定设置将列出供您查看和确认。如果需要更改任何内容,请返回更改,或者点击“下一步”继续到下一页。
- 安装准备就绪后,点击“下一步”开始安装。
- 等待安装完成。将显示确认信息。
- 安装完成后,您可以取消选中
Stack Builder
,然后点击“完成”退出安装向导。点击开始菜单,搜索SQL Shell (psql)
,并点击其图标打开psql
shell。
SQL Shell (psql)
会打开,您可以与您的PostgreSQL instance after specifying the connection details互动。除了密码,您可以通过按下Enter
选择所有项目的默认值,密码需要输入在安装向导期间为postgres
用户指定的密码。这将使您进入postgres=#
提示符。
连接到PostgreSQL
安装后会自动创建一个postgres
用户,该用户具有对DB实例的superadmin
访问权限。在Linux上,作为特权用户,您可以切换到此帐户,如下所示:
$ sudo su - postgres
进入后,我们可以重置postgres
用户密码,如下所示:
$ psql -c "alter user postgres with password 'P@SsW0rdH3r3'"
然后使用psql
启动PostgreSQL提示符,如下所示:
$ psql
这将使您进入PostgreSQL提示符:
$ psql
psql (12.7 (Ubuntu 12.7-0ubuntu0.20.04.1))
Type "help" for help.
postgres=#
在此提示符下,您可以与数据库互动并进行DB管理或用户任务。作为演示,以下步骤创建了一个DB和一个用户,并为新用户分配了对新数据库的权限:
postgres=# CREATE DATABASE yaoweibindb;
CREATE DATABASE
postgres=# CREATE USER geekuser WITH ENCRYPTED PASSWORD 'N3wP@33w0rD';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE yaoweibindb to geekuser;
GRANT
postgres=#
我们可以使用l
命令列出DB:
postgres=# l
数据库列表
名称 | 所有者 | 编码 | 校对 | 类型 | 访问权限
-------------+----------+----------+---------+---------+-----------------------
yaoweibindb | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | geekuser=CTc/postgres
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 行)
postgres=#
现在你可以简单地使用以下命令连接到数据库:
postgres=# c yaoweibindb
现在作为用户"postgres"连接到数据库"yaoweibindb"。
yaoweibindb=#
摘要
由于其强大的功能、特性和可扩展性,PostgreSQL是企业界广泛采用的数据库之一。它易于学习,并且尽力与SQL标准兼容。
PostgreSQL的官方网站上提供了一个链接。