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:~#
分析环境
从安装日志来看,默认安装好后的 PostgreSQL 配置文件放在 /etc/postgresql/9.3/main
目录下,数据库存储文件放在 /var/lib/postgresql/9.3/main
目录下,默认语言编码为 zh_CN.UTF-8
,默认端口 5432
。
配置远程访问
默认情况下,PostgreSQL 安装好后是不允许远程访问的,需要修改 postgresql.conf
和 pg_hba.conf
两个配置文件。
postgresql.conf
修改监听 IP 地址。
sudo vim /etc/postgresql/9.3/main/postgresql.conf
/listen_addresses
搜索 listen_addresses 配置项,取消掉前面的注释符号 #
, 配置项值为 *
,表示监听所有 IP 地址。
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 username
以 postgres
用户执行 createuser username
语句(username
替换你需要创建的用户名),如果有以下提示:
createuser: could not connect to database postgres:
FATAL: role "xxx" does not exist
是因为只有 UNIX 系统中的 postgres 用户才能用 createuser/dropuser 创建或者删除数据库中的用户(role)。
至此,再次重启服务,就可以正常使用了。