51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

ubuntu linux安装postgresql数据库

# ubuntu linux安装postgresql数据库 {#ubuntu-linux安装postgresql数据库}

本文介绍ubuntu linux操作系统下如何安装数据库postgresql。postgresql和mysql一样,也是当前主流的开源的关系型数据库,但是postgresql拥有很多mysql不具备或支持不够完善的特性,例如支持nosql特性等,对json的处理能力要比mysql强。

# 1. 安装postgresql {#_1-安装postgresql}

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql

安装过程如下:

(py3.6) wangshibiao@wangshibiao:/data/workspace/wangshibiao/tmp/golang-proxy$ sudo apt-get -y install postgresql
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  librdkafka1 libxcb-xtest0
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
  libllvm6.0 libpq5 pgdg-keyring postgresql-13 postgresql-client-13 postgresql-client-common postgresql-common sysstat
建议安装:
  postgresql-doc postgresql-doc-13 isag
下列【新】软件包将被安装:
  libllvm6.0 pgdg-keyring postgresql postgresql-13 postgresql-client-13 postgresql-client-common postgresql-common sysstat
下列软件包将被升级:
  libpq5
升级了 1 个软件包,新安装了 8 个软件包,要卸载 0 个软件包,有 663 个软件包未被升级。
需要下载 31.4 MB 的归档。
解压缩后会消耗 117 MB 的额外空间。
获取:1 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 libllvm6.0 amd64 1:6.0-1ubuntu2~16.04.1 [14.3 MB]
获取:2 http://apt.postgresql.org/pub/repos/apt xenial-pgdg/main amd64 libpq5 amd64 13.2-1.pgdg16.04+1 [175 kB]
获取:3 http://apt.postgresql.org/pub/repos/apt xenial-pgdg/main amd64 pgdg-keyring all 2018.2 [10.7 kB]
获取:4 http://apt.postgresql.org/pub/repos/apt xenial-pgdg/main amd64 postgresql-client-common all 225.pgdg16.04+1 [89.3 kB]
获取:5 http://apt.postgresql.org/pub/repos/apt xenial-pgdg/main amd64 postgresql-client-13 amd64 13.2-1.pgdg16.04+1 [1,489 kB]
获取:6 http://apt.postgresql.org/pub/repos/apt xenial-pgdg/main amd64 postgresql-common all 225.pgdg16.04+1 [240 kB]                                    
获取:7 http://apt.postgresql.org/pub/repos/apt xenial-pgdg/main amd64 postgresql-13 amd64 13.2-1.pgdg16.04+1 [14.8 MB]                                  
获取:8 http://mirrors.aliyun.com/ubuntu xenial-security/main amd64 sysstat amd64 11.2.0-1ubuntu0.3 [242 kB]                                             
获取:9 http://apt.postgresql.org/pub/repos/apt xenial-pgdg/main amd64 postgresql all 13+225.pgdg16.04+1 [64.8 kB]                                       
已下载 31.4 MB,耗时 40秒 (779 kB/s)                                                                                                                    
N: 忽略'mongodb-org-3.4.listcV'(于目录'/etc/apt/sources.list.d/'),鉴于它的文件扩展名无效
正在预设定软件包 ...
正在选中未选择的软件包 libllvm6.0:amd64。
(正在读取数据库 ... 系统当前共安装有 391891 个文件和目录。)
正准备解包 .../libllvm6.0_1%3a6.0-1ubuntu2~16.04.1_amd64.deb  ...
正在解包 libllvm6.0:amd64 (1:6.0-1ubuntu2~16.04.1) ...
正准备解包 .../libpq5_13.2-1.pgdg16.04+1_amd64.deb  ...
正在将 libpq5:amd64 (13.2-1.pgdg16.04+1) 解包到 (9.5.19-0ubuntu0.16.04.1) 上 ...
正在选中未选择的软件包 pgdg-keyring。
正准备解包 .../pgdg-keyring_2018.2_all.deb  ...
正在解包 pgdg-keyring (2018.2) ...
正在选中未选择的软件包 postgresql-client-common。
正准备解包 .../postgresql-client-common_225.pgdg16.04+1_all.deb  ...
正在解包 postgresql-client-common (225.pgdg16.04+1) ...
正在选中未选择的软件包 postgresql-client-13。
正准备解包 .../postgresql-client-13_13.2-1.pgdg16.04+1_amd64.deb  ...
正在解包 postgresql-client-13 (13.2-1.pgdg16.04+1) ...
正在选中未选择的软件包 postgresql-common。
正准备解包 .../postgresql-common_225.pgdg16.04+1_all.deb  ...
正在添加 postgresql-common 导致 /usr/bin/pg_config 转移到 /usr/bin/pg_config.libpq-dev
正在解包 postgresql-common (225.pgdg16.04+1) ...
正在选中未选择的软件包 postgresql-13。
正准备解包 .../postgresql-13_13.2-1.pgdg16.04+1_amd64.deb  ...
正在解包 postgresql-13 (13.2-1.pgdg16.04+1) ...
正在选中未选择的软件包 postgresql。
正准备解包 .../postgresql_13+225.pgdg16.04+1_all.deb  ...
正在解包 postgresql (13+225.pgdg16.04+1) ...
正在选中未选择的软件包 sysstat。
正准备解包 .../sysstat_11.2.0-1ubuntu0.3_amd64.deb  ...
正在解包 sysstat (11.2.0-1ubuntu0.3) ...
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在处理用于 systemd (229-4ubuntu21.27) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
ureadahead will be reprofiled on next reboot
正在处理用于 doc-base (0.10.7) 的触发器 ...
Processing 1 added doc-base file...
正在设置 libllvm6.0:amd64 (1:6.0-1ubuntu2~16.04.1) ...
正在设置 libpq5:amd64 (13.2-1.pgdg16.04+1) ...
正在设置 pgdg-keyring (2018.2) ...
Removing apt.postgresql.org key from trusted.gpg: OK
正在设置 postgresql-client-common (225.pgdg16.04+1) ...
正在设置 postgresql-client-13 (13.2-1.pgdg16.04+1) ...
update-alternatives: 使用 /usr/share/postgresql/13/man/man1/psql.1.gz 来在自动模式中提供 /usr/share/man/man1/psql.1.gz (psql.1.gz)
正在设置 postgresql-common (225.pgdg16.04+1) ...
正在将用户"postgres"加入到"ssl-cert"组中

Creating config file /etc/postgresql-common/createcluster.conf with new version
Building PostgreSQL dictionaries from installed myspell/hunspell packages...
  en_us
Removing obsolete dictionary files:
正在设置 postgresql-13 (13.2-1.pgdg16.04+1) ...
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(?<!\\)\${ <-- HERE ([^}]+)}/ at /usr/sbin/pam_getenv line 78.
Creating new PostgreSQL cluster 13/main ...
/usr/lib/postgresql/13/bin/initdb -D /var/lib/postgresql/13/main --auth-local peer --auth-host md5
属于此数据库系统的文件宿主为用户 "postgres".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "zh_CN.UTF-8"进行初始化.
默认的数据库编码已经相应的设置为 "UTF8".
initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
缺省的文本搜索配置将会被设置到"simple"

禁止为数据页生成校验和.

修复已存在目录 /var/lib/postgresql/13/main 的权限 ... 成功
正在创建子目录 ... 成功
选择动态共享内存实现 ......posix
选择默认最大联接数 (max_connections) ... 100
选择默认共享缓冲区大小 (shared_buffers) ... 128MB
selecting default time zone ... Asia/Shanghai
创建配置文件 ... 成功
正在运行自举脚本 ...成功
正在执行自举后初始化 ...成功
同步数据到磁盘...成功

成功。您现在可以用下面的命令开启数据库服务器:

    pg_ctlcluster 13 main start

Ver Cluster Port Status Owner    Data directory              Log file
13  main    5432 down   postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log
update-alternatives: 使用 /usr/share/postgresql/13/man/man1/postmaster.1.gz 来在自动模式中提供 /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz)
正在设置 postgresql (13+225.pgdg16.04+1) ...
正在设置 sysstat (11.2.0-1ubuntu0.3) ...

Creating config file /etc/default/sysstat with new version
update-alternatives: 使用 /usr/bin/sar.sysstat 来在自动模式中提供 /usr/bin/sar (sar)
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在处理用于 systemd (229-4ubuntu21.27) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
N: 忽略'mongodb-org-3.4.listcV'(于目录'/etc/apt/sources.list.d/'),鉴于它的文件扩展名无效
(py3.6) wangshibiao@wangshibiao:/data/workspace/wangshibiao/tmp/golang-proxy$

安装完毕后,系统会创建一个数据库超级用户 postgres,密码为空。 若有疑问,详见官方安装文档

# 2. 访问postgresql {#_2-访问postgresql}

使用用户postgres执行命令psql即可访问数据库,过程如下:

(py3.6) wangshibiao@wangshibiao:~$ sudo -i -u postgres
postgres@wangshibiao:~$ psql
psql (13.2 (Ubuntu 13.2-1.pgdg16.04+1))
输入 "help" 来获取帮助信息.

postgres=#

只有用户postgres才有权限访问数据库,所以需要事先切换到该用户下。

  1. 参考资料 更详细的使用方法详见postgresql (opens new window)
赞(5)
未经允许不得转载:工具盒子 » ubuntu linux安装postgresql数据库