zoukankan      html  css  js  c++  java
  • 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
    


  • 相关阅读:
    Centos 卸载Docker
    若依微服务版本 Windows下开发环境搭建
    Iterator 其实很简单(最好理解的工厂模式的例子)
    MySQL replace into详解
    MYSQL事务隔离
    Linux下rpm卸载安装MySQL出现specifies multiple packages
    linux删除文件夹的时候出现设备或者资源忙
    IOS下的safari下localStorage不起作用的问题
    windows下nginx配置报错GetFileAttributesEx
    Linux下增加swap的方法
  • 原文地址:https://www.cnblogs.com/moonlight-lin/p/13899942.html
Copyright © 2011-2022 走看看