如何在Debian Linux 9上安装和设置PostgreSQL 9.6

时间:2020-01-09 10:39:25  来源:igfitidea点击:

如何在Debian Linux 9.x版上安装和设置PostgreSQL 9.6版数据库系统?

PostgreSQL(Postgres)是一个免费的开源对象关系数据库系统。
本教程向您展示如何在Debian Linux 9上安装和配置PostgreSQL版本9.6关系数据库。

安装PostgreSQL

首先使用apt命令或apt-get命令更新系统:

$ sudo apt update
$ sudo apt upgrade

要安装PostgreSQL服务器,客户端和其他工具,请执行:

$ sudo apt-get install postgresql

或指定版本号:

$ sudo apt-get install postgresql-9.6

在Debian 9上安装PostgreSQL 9.6

如何启动/停止/重启PostgreSQL服务器?

语法如下。

启动PostgreSQL服务器的命令

$ sudo systemctl start postgresql

停止PostgreSQL服务器的命令

$ sudo systemctl stop postgresql

重新启动PostgreSQL服务器的命令

$ sudo systemctl restart postgresql

查看PostgreSQL服务器状态的命令

$ sudo systemctl status postgresql

输出示例:

? postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Fri 2016-06-30 17:46:59 UTC; 4min 23s ago
Main PID: 21627 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/postgresql.service
 
Jun 30 17:46:59 debian-9-stretch systemd[1]: Starting PostgreSQL RDBMS...
Jun 30 17:46:59 debian-9-stretch systemd[1]: Started PostgreSQL RDBMS.
Jun 30 17:47:00 debian-9-stretch systemd[1]: postgresql.service: Failed to reset devices.list: Operation not permitted

PostgreSQL管理员用户

在Debian Linux服务器上名为PostgreSQL的PostgreSQL管理员用户。
使用postgres用户访问数据库和DBA需求。
要登录,请输入以下命令:

$ su - postgres
$ psql

输出示例:

psql (9.6.3)
Type "help" for help.

postgres=#

psql充当PostgreSQL客户端,您可以其中执行所有SQL命令。
请注意,postgres用户不同于postgres Linux用户。
名为postgres的Linux用户用于访问数据库,而PostgreSQL用户用于执行DBA工作。

通过设置密码保护Postgres用户帐户

以root用户身份输入以下命令来设置postgres Linux用户帐户的密码,运行:

$ sudo passwd postgres

输出示例:

Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

也登录并设置postgres用户的psql会话密码:

$ su - postgres
$ psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'SecretPasswordHere';"
ALTER ROLE

创建一个新角色/用户

首先使用adduser命令创建一个名为Hyman的shell用户:

$ adduser Hyman

您需要使用名为createuser的命令。
它创建一个新的PostgreSQL用户(或更确切地说,一个角色)。
语法为:

createuser userNameHere
createuser [options] userNameHere

要在默认数据库服务器上创建用户Hyman:

$ su - postgres
$ createuser Hyman --pwprompt

或要在默认数据库服务器上创建一个名为Hyman的用户并提示一些其他属性,请执行以下操作:

$ su - postgres
$ createuser --pwprompt --interactive Hyman
Enter password for new role: 
Enter it again: 
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n

要查看有关用户的信息,请运行:

$ psql

在postgres = prompt输入\ du

postgres=# \du

输出示例:

List of roles
Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+----------
postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
Hyman     | Create DB                                                  | {}

为用户Hyman创建一个新数据库

语法为:

createdb -O userNameHere dbNameHere

例如:

$ su - postgres
$ createdb -O Hyman sales

如何以用户Hyman身份登录?

执行以下shell命令:

$ su - Hyman

执行以下shell命令,以用户Hyman登录到名为sales的数据库:

$ psql -U Hyman -d sales

输出示例:

psql (9.6.3)
Type "help" for help.

sales=>

要创建一个名为foo的表:

sales=> CREATE TABLE foo (id int, name varchar);

添加一些数据:

sales=> INSERT INTO foo VALUES (1, '');
sales=> INSERT INTO foo VALUES (2, 'Wendy Gite');
sales=> INSERT INTO foo VALUES (3, 'Tom Jerry');

列表数据:

sales=> SELECT * FROM foo;

您可以使用以下SQL语句轻松删除数据:

sales=> DELETE FROM foo WHERE id = '3';

列出可用表

执行以下\ d命令:

sales=&gt \d
       List of relations
Schema | Name | Type  | Owner 
--------+------+-------+------
public | foo  | table | Hyman
(1 row)

sales=>

列出数据库

执行以下\ l命令:

sales=> \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+----------------------
postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
sales     | Hyman    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)