Ubuntu 16 安装配置 Postgresql

APT 安装

ubuntu 16 apt 源的默认版本为 9.3,也可以使用 apt search postgresql 查找可用的版本。

我们直接用 sudo apt-get install postgresql 安装 postgresql 数据库。

root@Master:~# apt-get install postgresql
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
将会同时安装下列软件:
  libpq5 postgresql-9.3 postgresql-client-9.3 postgresql-client-common postgresql-common ssl-cert
建议安装:
  oidentd | ident-server locales-all postgresql-doc-9.3 openssl-blacklist
下列【新】软件包将被安装:
  libpq5 postgresql postgresql-9.3 postgresql-client-9.3 postgresql-client-common postgresql-common ssl-cert
升级了 0 个软件包,新安装了 7 个软件包,要卸载 0 个软件包,有 1 个软件包未被升级。
需要下载 3,723 kB 的归档。
解压缩后会消耗 15.7 MB 的额外空间。
您希望继续执行吗? [Y/n] Y
获取:1 http://mirrors.163.com/ubuntu trusty-updates/main amd64 libpq5 amd64 9.3.23-0ubuntu0.14.04 [78.6 kB]
获取:2 http://mirrors.163.com/ubuntu trusty-security/main amd64 postgresql-client-common all 154ubuntu1.1 [25.4 kB]
获取:3 http://mirrors.163.com/ubuntu trusty-updates/main amd64 postgresql-client-9.3 amd64 9.3.23-0ubuntu0.14.04 [795 kB]
获取:4 http://mirrors.163.com/ubuntu trusty/main amd64 ssl-cert all 1.0.33 [16.6 kB]                                                                                    
获取:5 http://mirrors.163.com/ubuntu trusty-security/main amd64 postgresql-common all 154ubuntu1.1 [103 kB]                                                             
获取:6 http://mirrors.163.com/ubuntu trusty-updates/main amd64 postgresql-9.3 amd64 9.3.23-0ubuntu0.14.04 [2,699 kB]                                                    
获取:7 http://mirrors.163.com/ubuntu trusty-security/main amd64 postgresql all 9.3+154ubuntu1.1 [5,032 B]                                                               
已下载 3,723 kB,耗时 7秒 (470 kB/s)                                                                                                                                    
正在预设定软件包 ...
正在选中未选择的软件包 libpq5。
(正在读取数据库 ... 系统当前共安装有 63034 个文件和目录。)
正准备解包 .../libpq5_9.3.23-0ubuntu0.14.04_amd64.deb  ...
正在解包 libpq5 (9.3.23-0ubuntu0.14.04) ...
正在选中未选择的软件包 postgresql-client-common。
正准备解包 .../postgresql-client-common_154ubuntu1.1_all.deb  ...
正在解包 postgresql-client-common (154ubuntu1.1) ...
正在选中未选择的软件包 postgresql-client-9.3。
正准备解包 .../postgresql-client-9.3_9.3.23-0ubuntu0.14.04_amd64.deb  ...
正在解包 postgresql-client-9.3 (9.3.23-0ubuntu0.14.04) ...
正在选中未选择的软件包 ssl-cert。
正准备解包 .../ssl-cert_1.0.33_all.deb  ...
正在解包 ssl-cert (1.0.33) ...
正在选中未选择的软件包 postgresql-common。
正准备解包 .../postgresql-common_154ubuntu1.1_all.deb  ...
正在添加 postgresql-common 导致 /usr/bin/pg_config 转移到 /usr/bin/pg_config.libpq-dev
正在解包 postgresql-common (154ubuntu1.1) ...
正在选中未选择的软件包 postgresql-9.3。
正准备解包 .../postgresql-9.3_9.3.23-0ubuntu0.14.04_amd64.deb  ...
正在解包 postgresql-9.3 (9.3.23-0ubuntu0.14.04) ...
正在选中未选择的软件包 postgresql。
正准备解包 .../postgresql_9.3+154ubuntu1.1_all.deb  ...
正在解包 postgresql (9.3+154ubuntu1.1) ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在处理用于 systemd (229-4ubuntu21) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
正在设置 libpq5 (9.3.23-0ubuntu0.14.04) ...
正在设置 postgresql-client-common (154ubuntu1.1) ...
正在设置 postgresql-client-9.3 (9.3.23-0ubuntu0.14.04) ...
update-alternatives: 使用 /usr/share/postgresql/9.3/man/man1/psql.1.gz 来在自动模式中提供 /usr/share/man/man1/psql.1.gz (psql.1.gz)
正在设置 ssl-cert (1.0.33) ...
正在设置 postgresql-common (154ubuntu1.1) ...
supported_versions: WARNING: Unknown Ubuntu release: 16.04
Adding user postgres to group ssl-cert

Creating config file /etc/logrotate.d/postgresql-common with new version
Building PostgreSQL dictionaries from installed myspell/hunspell packages...
Removing obsolete dictionary files:
正在设置 postgresql-9.3 (9.3.23-0ubuntu0.14.04) ...
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 cluster 9.3/main ...
  config /etc/postgresql/9.3/main
  data   /var/lib/postgresql/9.3/main
  locale zh_CN.UTF-8
  port   5432
update-alternatives: 使用 /usr/share/postgresql/9.3/man/man1/postmaster.1.gz 来在自动模式中提供 /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz)
正在设置 postgresql (9.3+154ubuntu1.1) ...
正在处理用于 libc-bin (2.23-0ubuntu9) 的触发器 ...
正在处理用于 systemd (229-4ubuntu21) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
root@Master:~#

分析环境

20180724103125.jpg

从安装日志来看,默认安装好后的 PostgreSQL 配置文件放在 /etc/postgresql/9.3/main 目录下,数据库存储文件放在 /var/lib/postgresql/9.3/main 目录下,默认语言编码为 zh_CN.UTF-8,默认端口 5432

配置远程访问

默认情况下,PostgreSQL 安装好后是不允许远程访问的,需要修改 postgresql.confpg_hba.conf 两个配置文件。

20180724103148.jpg

postgresql.conf

修改监听 IP 地址。

sudo vim /etc/postgresql/9.3/main/postgresql.conf

/listen_addresses 搜索 listen_addresses 配置项,取消掉前面的注释符号 #, 配置项值为 *,表示监听所有 IP 地址。

20180725092427.jpg

pg_hba.conf

pg_hba.conf 配置文件为客户端授权认证相关的配置文件,具体的配置项和说明,在配置文件中有详尽的说明。

修改或添加允许访问数据库服务的 IP:

# IPv4 local connections:
host    all             all             0.0.0.0/0            md5

然后 systemctl restart postgresql.service 重启数据库,就可以远程访问了。

默认用户名和密码

在 UNIX 平台中安装 PostgreSQL 之后,PostgreSQL 会在 UNIX 系统中创建一个名为 postgres 当用户。PostgreSQL 的默认用户名和数据库也是 postgres

不过没有默认密码。在安装 PostgreSQL 之后可以以默认用户登录,也可以创建新当用户名。

以默认用户登录

fans@Master ~ $ sudo su postgres           # 切换至 postgres

postgres@Master /home/fans $ psql postgres # 登入默认数据库
[sudo] passwordfor fans: 
psql (9.3)
Type "help" for help.

以上命令也可以简化为:

fans@Master ~ $ sudo -u postgres psql postgres

登录之后给默认用户“postgres”设置密码。

postgres=# \password postgres          # 给 postgres 用户设置密码
Enter new password: 
Enter it again: 
postgres=#

创建新用户

在 UNIX shell 中 createuser 命令可以创建用户。

sudo -u postgres createuser usernamepostgres 用户执行 createuser username 语句(username 替换你需要创建的用户名),如果有以下提示:

createuser: could not connect to database postgres:
FATAL:  role "xxx" does not exist

是因为只有 UNIX 系统中的 postgres 用户才能用 createuser/dropuser 创建或者删除数据库中的用户(role)。

至此,再次重启服务,就可以正常使用了。

如果觉得这对你有用,请随意赞赏,给与作者支持
评论 0
最新评论