Advertisement

ubuntu18下安装postgresql

阅读量:

ubuntu下安装postgresql

此文介绍在ubuntu18下安装较新版本的postgresql服务,及配置远程连接。

配置软件源

先检查可安装的版本

复制代码
    apt show postgresql

ubuntu默认软件源里的postgresql会比较老一些,如果默认源中的版本合适,则可跳过此步。

复制代码
    # 获取 GPG 密钥
    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    # 添加源
    sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
    # 更新一下
    sudo apt update

再重复下最开始的命令就可以看到最新版本了。如下

复制代码
    Package: postgresql
    Version: 13+226.pgdg18.04+1
    Priority: optional
    Section: database
    Source: postgresql-common (226.pgdg18.04+1)

安装与运行

安装命令为

复制代码
    sudo apt install postgresql postgresql-contrib

如果一切顺利,则可以用下面的命令来操作postgresql服务。启动、关闭、重启或查看状态:

复制代码
    service postgresql start\stop\restart\status

用户管理

与mysql不同的是,postgresql需要使用linux用户来登录服务,默认超级用户为postgres。你需要切换到此用户上再进行操作。

复制代码
    # 切换用户
    sudo su postgres
    # 进行交互式命令行,类似于mysql的用户登录
    psql

一切顺利,将会出现一些提示,如

复制代码
    psql (13.4 (Ubuntu 13.4-1.pgdg18.04+1))
    Type "help" for help.
    
    postgres=#

可以输入 \q 以退出,输入 \? 获取帮助

用户创建

在上一步进入的命令行环境中,可以对用户进行操作。

复制代码
    # 创建用户
    CREATE USER user01 WITH PASSWORD 'PASSWORD';
    # 给用户创建一个数据库
    CREATE DATABASE test01 OWNER user01;
    # 将此库所有权限赋予用户
    GRANT ALL PRIVILEGES ON DATABASE test01 TO user01;

在外网环境下,应当创建单独用户负责某些库的管理,不应当把超级用户放开访问。

允许外网访问

postgresql比mysql要麻烦一点。

修改配置文件,允许所有IP访问。配置文件通常是/etc/postgresql/13/main/postgresql.conf,根据安装的版本变下中间的路径。

复制代码
    listen_addresses = '*'

改完重启,就可以被其他服务器访问了,但无法使用任何用户登录。

此需要修改上述目录下的pg_hba.conf文件。

配置此文件需要先了解下面五个参数:

  1. TYPE:表示主机类型。local 表示是unix-domain的socket连接,host 是TCP/IP socket ,hostssl 是SSL加密的TCP/IP socket
  2. DATABASE :表示数据库名称。值可能为:all ,sameuser,samerole,replication,数据库名称,或者多个 数据库名称用 ,注意ALL不匹配 replication
  3. USER :表示用户名称。值可能为:all,一个用户名一组用户名 ,多个用户时可以用 ,隔开
  4. ADDRESS:该参数可以为 主机名称 或者IP/32(IPV4)IP/128(IPV6),主机 名称以 .开头,samehostsamenet 匹配任意Ip地址
  5. METHOD:验证方式。该值可以为trust, reject, md5, password, scram-sha-256, gss, sspi, ident, peer, pam, ldap, radius or certtrust表示不需要密码就可以连接。

所以开放一个数据库的配置如下:

复制代码
    # TYPE  DATABASE        USER            ADDRESS                 METHOD 
    host    db01            user01           0.0.0.0/0               md5

重启过后应当可以远程访问了。

其他

navicat12对postgresql支持似乎有点问题,无法查看已存在的数据表,无论是否为新增的。

升级版本或换用其他产品。

全部评论 (0)

还没有任何评论哟~