如何在Debian 10/Debian 9上安装PostgreSQL 12

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

如何在Debian 10/Debian 9上安装PostgreSQL 12?
PostgreSQL是一个强大的关系数据库管理系统,用于全球范围用于运行关键任务应用程序。
PostgreSQL基于Postgres 4.2.
PostgreSQL 12已发布于2019年10月3日的一般使用。
本教程将重点关注用户如何在Debian 10/Debian 9 Linux发行版上安装PostgreSQL 12.

请按照以下步骤在Debian 10/Debian 9 Linux系统上安装PostgreSQL 12.

第1步:更新系统

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

sudo apt update
sudo apt -y upgrade
sudo shutdown -r now

第2步:添加PostgreSQL 12存储库

用于签名包的GPG密钥需要导入系统:

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

导入GPG密钥后,添加PostgreSQL存储库:

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

第3步:在Debian 10/Debian 9上安装PostgreSQL 12

现在,存储库已成功添加,更新包列表并在Debian 10/Debian 9 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 deb10 systemd[1]: Starting PostgreSQL RDBMS…
 Oct 06 10:23:46 deb10 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 deb10 systemd[1]: Starting PostgreSQL Cluster 12-main…
 Oct 06 10:23:49 deb10 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 (Debian 12.0-1.pgdg100+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:配置远程连接

PostgreSQL的安装仅接受来自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.