PostgreSQL 的安装配置

安装

sudo apt-get install postgresql

安装完成后,默认会:

  • 创建名为 postgres 的 Linux 用户
  • 创建名为 postgres、不带密码的默认数据库账号作为数据库管理员
  • 创建名为 postgres 的数据库

安装完成后的一些默认信息如下:

config  /etc/postgresql/9.5/main 
data    /var/lib/postgresql/9.5/main 
locale  en_US.UTF-8 
socket  /var/run/postgresql 
port    5432

安装后 Postgres 会自动启动

配置数据库以允许远程连接访问

安装完成后,默认只能本地才能连接数据库,其他机子访问不了,需要以下步骤让其他机子访问

a.  修改监听地址
    sudo vi /etc/postgresql/9.5/main/postgresql.conf 
    将 listen_addresses = 'localhost' 的注释去掉并改为 listen_addresses = '*' 
        
b.  修改可访问用户的IP段
    sudo vi /etc/postgresql/9.5/main/pg_hba.conf 
    在文件末尾添加: host all all 0.0.0.0 0.0.0.0 md5 ,表示允许任何IP连接
    
c.  重启数据库
    sudo /etc/init.d/postgresql restart

这样就可以通过其他机器访问了

以默认管理员账号 postgres 登录

安装后有一个不需要密码的管理员账号 postgres 可以登录

sudo -u postgres psql

设置密码

alter user postgres with password '123456';

一些基本命令

password:          设置密码
q:                 退出
h:                 查看 SQL 命令的解释,比如 h select
?:                 查看 psql 命令列表
l:                 列出所有数据库
c [database]:      连接其他数据库
d:                 列出所有表格
d+:                列出更详细信息
d [table]:         列出某一张表格的结构
du:                列出所有用户
dS:                列出系统信息
dn:                列出 schema 信息
e:                 打开文本编辑器
conninfo:          列出当前数据库和连接的信息

输出格式可以通过 pset 设置

添加新用户、新数据库、新表、新 Schema

create user my_user with password '123456';
create database my_db owner my_user;
grant all privileges on database my_db to my_user;

## 退出后用 my_user 登录 my_db

CREATE TABLE my_table (
    id SERIAL PRIMARY KEY,
    name VARCHAR(20) NOT NULL, 
    salary INTEGER, 
    birthday timestamp default('1970-01-01 00:00:00')
);

d               ## 可以看到 my_table
d my_table      ## 查看 my_table 的结构

CREATE SCHEMA my_schema;
GRANT ALL ON SCHEMA my_schema TO my_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA my_schema TO my_user;

CREATE TABLE my_schema.my_table_2 (
    id VARCHAR(20) NOT NULL,
    name VARCHAR(20), 
    salary INTEGER, 
    birthday timestamp default('1970-01-01 00:00:00'),

    constraint pk_tbl_primary primary key (id, name)
);

d               ## 看不到 my_table_2
d my_schema.*   ## 可以看到 my_table_2

alter user my_user set search_path to my_schema;    ## 改变用户的默认 schema

## 退出后重新以 my_user 登录 my_db

d               ## 可以看到 my_table_2 了,因为现在 my_user 的默认 schema 改成了 my_schema

SHOW search_path;

dn              ## 查看 schema

另一种链接方式

psql postgresql://username@hostname:port/database?sslmode=require


原文地址:https://www.cnblogs.com/moonlight-lin/p/13899942.html