我爱编程

PostgreSQL10.3配置与安装

2018-04-13  本文已影响0人  某不科学的XX

三种开源DB

MySQL自称世界上最流行的开源数据库。
PostgreSQL自称世界上最先进的开源数据库。
MariaDB属于MySQL的一个分支,目的是为了防止甲骨文将其闭源。

PostgreSQL10.3安装

PostgreSQL官网提供了非常方便的脚本。只需要选择相对应的系统版本与数据库版本即可生成命令。我选择的环境是centos7,postgresql10.3

// 添加RPM源
yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
// 通过yum安装PostgreSQL客户端
yum install postgresql10
// 安装PostgreSQL服务端
// 默认将安装在/usr/pgsql-10下,./bin目录为命令目录
yum install postgresql10-server
// 初始化数据库并启动服务
// 初始化数据库:默认的数据库配置文件与数据库文件将建立在/var/lib/pgsql/10/data下
/usr/pgsql-10/bin/postgresql-10-setup initdb
systemctl enable postgresql-10
systemctl start postgresql-10

PostgreSQL10.3配置

与常见的mysql连接数据库方式不同,postgresql实用psql作为命令行连接工具。
官方文档:https://www.postgresql.org/docs/current/static/app-psql.html
由于postgresql默认超级用户为postgres,而且他的登陆认证为ident模式,需要对应的用户名才能登陆数据库,不过在安装postgresql时,它已经帮我们新建了一个postgres用户,我们只需要切换到postgres用户,然后再登陆即可。

// 切换用户
su postgres
// 登陆到数据库,初始时无密码
psql
// 这时可以使用help查看命令帮助,其中\h是通用的sql语法,\?是psql的命令语法。
// \password创建密码,\l列出所有数据库,\du列出所有用户,\d当前数据库的表,视图等,\q退出
// 为了安全先给postgres添加密码
\password
// 初始时只有template0,template1,postgres三个库
\l
// 初始只有postgres一个用户,它是超级用户,并且比其他超级用户多两项权限
\du
创建用户与数据库

为了方便管理我又添加了一个新的普通超级用户root。

// 切换到/usr/pgsql-10/bin目录
cd /usr/pgsql-10/bin
// 使用createuser创建用户,-s参数为超级用户
createuser root -s
// 然后给root添加密码,先连接数据库,然后添加密码,但要添加添加用户名,否则默认修改postgres的密码
psql
\password root
// 由于psql默认登陆同用户名数据库,所以我们再创建一个root数据库
create database root owner root;
// 退出psql并切换回root
\q
exit

此时我们就可以直接以root用户使用psql登陆postgresql数据库,并对数据库进行操作。

使用外部工具连接PostgreSQL

PostgreSQL官方提供了多种工具连接数据库,比如命令行工具psql与图形化工具pgAdmin。我推荐使用adminer来连接各种数据库,界面非常友好,操作简单明了,比phpMyAdmin不知道好到哪里去了。
adminer官网:https://www.adminer.org/
pgAdmin官网:https://www.pgadmin.org/
下载安装完pgAdmin或者adminer后,不能直接连接数据库,还需要对系统与数据库进行配置。

// 首先,配置防火墙打开5432端口,并重载配置
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

// 配置postgresql
// 正如上面提到的ident认证方式,postgresql有很多不同的认证方法。常用的有trust,password,md5,peer,scram-sha-256,ident。其中官方推荐后三种方式,不推荐前面的两种。
// 关于peer与ident认证:https://yq.aliyun.com/articles/55898
// 官方文档:https://www.postgresql.org/docs/current/static/auth-methods.html

// 修改postgresql配置文件,如果客户端在本地则不需要修改
// 将文件中的 listen_addresses = 'localhost' 修改为 listen_addresses = '*'
vim /var/lib/pgsql/10/data/postgresql.conf

// 修改postgresql的访问控制的配置文件
// 添加内容如下,其中ip修改为客户端的ip,认证方法可选择trust,password,md5,scram-sha-256等,但不知道为什么使用scram-sha-256的认证方式时,外部客户端与adminer都不能连接成功。
// host    all             all             192.168.0.9/32          md5
vim /var/lib/pgsql/10/data/pg_hba.conf

// 修改完成后重载配置,建议使用pg_ctl来控制数据库,当使用systemctl控制postgresql重启时可能会出问题
// pg_ctl管理Postgresql数据库:http://blog.sina.com.cn/s/blog_6742dfb7010161b2.html
/usr/pgsql-10/pg_ctl reload -D /var/lib/pgsql/10/data/

配置完成后应该就可以正常访问了。

END

上一篇下一篇

猜你喜欢

热点阅读