如何在Ubuntu 20.04/18.04/16.04上安装PostgreSQL 12

时间:2020-02-23 14:32:19  来源:igfitidea点击:

本教程将通过用于在Ubuntu 20.04/18.04/16.04 Linux系统上安装PostgreSQL 12的步骤。
PostgreSQL是基于Postgres 4.2的最广泛采用的对象关系数据库管理系统之一。
PostgreSQL 12已被释放为一般使用,适合生产和所有开发用例。

第1步:更新系统

如果是新服务器实例,建议更新当前系统包。

sudo apt update
sudo apt -y install vim bash-completion wget
sudo apt -y upgrade

升级后需要重新启动。

sudo reboot

第2步:添加PostgreSQL 12存储库

我们需要导入GPG键并将PostgreSQL 12存储库添加到Ubuntu机器中。
运行以下命令以完成此操作。

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add 

导入GPG密钥后,将存储库内容添加到Ubuntu 18.04/16.04系统:

echo "deb http://apt.postgresql.org/pub/repos/apt/`lsb_release -cs`-pgdg main" |sudo tee  /etc/apt/sources.list.d/pgdg.list

添加的存储库包含许多不同的包,包括第三方插件。
它们包括:PostgreSQL-ClientPostGresqllibpp-devpostgresql-server-devpgadmin包

第3步:在Ubuntu 20.04/18.04/16.04 LTS上安装PostgreSQL 12

现在,存储库已成功添加,更新包列表并在Ubuntu 20.04/18.04/16.04 Linux系统上安装PostgreSQL 12服务器和客户端软件包。

sudo apt update
sudo apt -y install postgresql-12 postgresql-client-12

成功的安装打印了类似于下一个屏幕截图中共享的消息。

每个系统重新引导后,都会启动PostgreSQL服务并将其设置为提出。

$systemctl status postgresql.service 
 ● postgresql.service - PostgreSQL RDBMS
    Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
    Active: active (exited) since Sun 2019-10-06 10:23:46 UTC; 6min ago
  Main PID: 8159 (code=exited, status=0/SUCCESS)
     Tasks: 0 (limit: 2362)
    CGroup: /system.slice/postgresql.service
 Oct 06 10:23:46 ubuntu18 systemd[1]: Starting PostgreSQL RDBMS…
 Oct 06 10:23:46 ubuntu18 systemd[1]: Started PostgreSQL RDBMS.
$systemctl status Hyman@theitroad 
 ● Hyman@theitroad - PostgreSQL Cluster 12-main
    Loaded: loaded (/lib/systemd/system/Hyman@theitroad; indirect; vendor preset: enabled)
    Active: active (running) since Sun 2019-10-06 10:23:49 UTC; 5min ago
  Main PID: 9242 (postgres)
     Tasks: 7 (limit: 2362)
    CGroup: /system.slice/system-postgresql.slice/Hyman@theitroad
            ├─9242 /usr/lib/postgresql/12/bin/postgres -D /var/lib/postgresql/12/main -c config_file=/etc/postgresql/12/main/postgresql.conf
            ├─9254 postgres: 12/main: checkpointer   
            ├─9255 postgres: 12/main: background writer   
            ├─9256 postgres: 12/main: walwriter   
            ├─9257 postgres: 12/main: autovacuum launcher   
            ├─9258 postgres: 12/main: stats collector   
            └─9259 postgres: 12/main: logical replication launcher   
 Oct 06 10:23:47 ubuntu18 systemd[1]: Starting PostgreSQL Cluster 12-main…
 Oct 06 10:23:49 ubuntu18 systemd[1]: Started PostgreSQL Cluster 12-main.
$systemctl is-enabled postgresql
enabled

第4步:测试PostgreSQL连接

在安装过程中,自动创建Postgres用户。
此用户对整个PostgreSQL实例具有完整的超级基金。
在切换到此帐户之前,登录系统用户应该具有sudo权限。

sudo su - postgres

让我们将此用户密码重置为我们可以记住的强密码。

psql -c "alter user postgres with password 'Hyman@theitroad'"

使用命令启动PostgreSQL提示符:

$psql

获取如下所示的连接详细信息。

$psql
psql (12.0 (Ubuntu 12.0-1.pgdg18.04+1))
Type "help" for help.
postgres=# \conninfo
You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".

让我们创建一个测试数据库和用户,看看它是否正常工作。

postgres=# CREATE DATABASE mytestdb;
CREATE DATABASE
postgres=# CREATE USER mytestuser WITH ENCRYPTED PASSWORD 'Hyman@theitroad';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE mytestdb to mytestuser;
GRANT

列表已创建的数据库:

postgres=# \l
                               List of databases
   Name    |  Owner   | Encoding | Collate |  Ctype  |    Access privileges    
-----------+----------+----------+---------+---------+------------------------
 mytestdb  | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =Tc/postgres           +
           |          |          |         |         | postgres=CTc/postgres  +
           |          |          |         |         | mytestuser=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 rows)

连接数据库:

postgres-# \c mytestdb
You are now connected to database "mytestdb" as user "postgres".

安装的其他PostgreSQL实用程序(如CreateUser和CreatedB)可用于创建数据库和用户。

Hyman@theitroad:~$createuser myuser --password
Password:
Hyman@theitroad:~$createdb mydb -O myuser
Hyman@theitroad:~$psql -l

我们可以在PostgreSQL Server上创建和连接到数据库。

步骤5:配置远程连接(可选)

在Ubuntu上安装PostgreSQL 12只接受来自LocalHost的连接。
在理想的生产环境中,我们将拥有一个连接到它的中央数据库服务器和远程客户端 - 但当然在私有网络(LAN)中。

要启用远程连接,请编辑PostgreSQL配置文件:

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

取消记录行59并更改侦听地址以接受网络中的连接。

# Listen on all interfaces
listen_addresses = '*'
# Listen on specified private IP address
listen_addresses = '192.168.10.11'

更改后,重新启动PostgreSQL服务。

sudo systemctl restart postgresql

确认听听地址。

# netstat  -tunelp | grep 5432
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      111        112837     11143/postgres      
tcp6       0      0 :::5432                 :::*                    LISTEN      111        112838     11143/postgres

第6步:安装PGADMIN4管理工具

如果要从Web界面管理PostgreSQL数据库服务器,请安装PGADMIN4.