CentOS7下安装并简单设置PostgreSQL笔记
为什么是PostgreSQL?
在.NET Core诞生之前,微软平台上最常见的开发组件便是.NET Framework + SQL Server了,但是现在.NET Core终于让跨平台部署成为了现实,这一模式还会常见吗?个人认为这一黄金搭档很可能会日渐势微了,因为未来很多的.NET应用将部署在Linux上,为了使用SQL Server,人们又部署一个Windows环境吗?想想都觉得不大可能,那么为Linux上的.NET Core选择一款合适的数据库就变得非常重要。其实也不难选,因为就两个选项,一个是MySQL(The world’s most popular open-source database),另一个是PostgreSQL(The world's most advanced open source database),从目前我的认知而言,我选择了PostgreSQL。
在51job上全文搜索MySQL,有1568页内容,而全文搜索PostgreSQL则只有44页内容(2016年9月16日数据),这说明使用MySQL的企业和从业人员数据远超PostgreSQL数据,那为什么我还要选择PostgreSQL呢?这要从三个方面谈起,一是我曾学习并使用过MySQL,感觉MySQL上手容易,精通困难,一般程序员没有经过培训驾驭不了MySQL,当时有个项目,开发阶段貌似和SQL Server区别不大,但是系统部署到生产环境之后很快性能问题就会暴露出来了,为此我不得不赶鸭子上架,边学边用,重构了整个数据访问层,(有同学可能会问了,PostgreSQL可能比MySQL还要难上手,额,我最担心的是项目组中有人SQL脚本技术不过关,MySQL对于脚本的优化做的又不咋滴...);第二是我目前对GIS应用系统比较感兴趣,而PostgreSQL有一个MySQL无法比拟的优势,那就是PostGIS,PostGIS可以完美支持空间数据存储和空间分析;三是从PostgreSQL9.3起就内置了JSON数据类型,而9.4又开始支持JSONB,这标志着PostgreSQL实际上已经是一个关系型数据库和NoSQL数据库的结合体了,而且有消息表明,PostgreSQL的NoSQL性能有益到甚至超过了MongoDB!,这对于GIS大数据应用是多么好的一个消息啊。我还有什么理由拒绝PostgreSQL呢?
~~~~~~~~~~~~~~~~我是分割线,以上都是废话~~~~~~~~~~~~~~~~
安装环境:CentOS7.2,与此处环境相同
在安装之前,先看看官方的安装说明总是一个好习惯
CentOS7.2中自带的PostgreSQL是9.2版本的,里面没有NoSQL特性,因此我们使用rpm包安装方式,PostgreSQL的repository包地址列表在这里。
1. 首先安装PostgreSQL的rpm
sudo yum install http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-redhat95-9.5-2.noarch.rpm -y
2. 然后再安装PostgreSQL服务器和第三方扩展包
sudo yum install postgresql95-server postgresql95-contrib -y
3. 初始化数据库(请看下面更新部分)
sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb
---------------------------我是分割线,2016.10.26更新开始---------------------------
3. 默认情况下,Postgresql安装目录是/usr/pgsql-9.5,而Postgresql的数据目录是/var/lib/pgsql/版本号/data目录,如果你从一开始就规划了/var很大磁盘空间,就没有问题,但是一旦你的/var目录空间并不大,那么就要考虑在安装Postgresql时指定安装目录了,在本例中,我们假定/home的空间很大。
首先在/home下创建一个Postgresql的数据目录
sudo mkdir /home/postgresql_data
然后为这个目录指定所有者同时分配权限
sudo chown postgres:postgres /home/postgresql_data sudo chmod 750 /home/postgresql_data
然后设置环境变量
export PATH=/usr/pgsql-9.5/bin:$PATH export LD_LIBRARY_PATH=/usr/pgsql-9.5/lib export PGDATA=/home/postgresql_data
然后使用命令initdb生成数据库簇,在此之此,请切换至postgres用户
initdb
最后尝试启动Postgresql服务
pg_ctl start -D $PGDATA
使用 ps -ef | grep postgres 验证,如果有一堆postgres相关进程,那就安装成功了。
如果就到此结束了,貌似第4步就没法做了,因为使用 systemctl start postgresql-9.5 将不会成功的,为啥呢?请打开 sudo vi /usr/lib/systemd/system/postgresql-9.5.service ,因为在#Location of database direcotry配置节里面没有指定正确的PGDATA。所以我们需要将下面的PGDATA设置成正确值
#Location of database directory
Environment=PGDATA=/home/postgresql_data
---------------------------我是分割线,2016.10.26更新结束---------------------------
4. 配置数据库服务开机启动并立即启动数据库服务
sudo systemctl enable postgresql-9.5.service sudo service postgresql-9.5 start
5. 检查数据库服务状态,有绿色,没红色说明启动OK了
service postgresql-9.5 status

6. 修改postgres用户密码,切换到postgres用户
sudo passwd postgres su postgres

7. 然后使用psql工具登录数据库,列出当前的数据库,命令分别是 psql 和 \l

在CentOS上,默认的PostgreSQL数据目录是/var/lib/pgsql/版本号/data
PostgreSQL的配置文件就在这个目录下/var/lib/pgsql/版本号/data/postgresql.conf,还有一个配置文件也需要稍加关注,那就是访问控制配置文件/var/lib/pgsql/版本号/data/pg_hba.conf
8. 下面需要先对服务配置文件postgresql.conf进行一些设置:
将 #listen_addresses = 'localhost' 前的#号去掉,然后将后面的localhost改为*,然后将 #port = 5432 前的#去掉,最后再将 #password_encryption = on 前面的#号去掉,如下图所示,使用wq命令保存退出。

(友情提示:postgresql.conf中可以修改的参数很多,上图中第2个红框可以修改侦听端口,另外此文件内还可以修改缓存大小等多种参数)
9. 再对pg_hba.conf内容进行配置,将上面红框内的ident改为md5,然后再在最下面加入 host all all 0.0.0.0/0 md5 ,如下图所示:

10. 重启postgresql-9.5服务,使配置文件重效
service postgresql-9.5 restart
11. 接下来我们创建一个数据库
psql
CREATE DATABASE testdb;
如下图所示,我们就创建了一个名为testdb的数据库,

12.然后再创建一名用户
CREATE USER think8848 CREATEDB LOGIN PASSWORD ''
如下图所示,这样我们就创建了一个名为think8848的用户,后面的 CREATEDB LOGIN PASSWORD '' 意思是这个用户可以创建数据库,还可以登录,他的密码是111111

13. 接下来将testdb的所有权限都分配给think8848同学
GRANT ALL ON DATABASE testdb TO think8848

14. 退出postgres用户登录,命令为\q, 对,你没看错,就是一个反斜杠和一个q
15. 开启防火墙5432端口
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent sudo firewall-cmd --reload
16. 尝试用think8848登录数据库
psql -U think8848 -h 127.0.0.1 -p 5432 -d testdb -W

最后,再说两个psql很常用的命令,一个\c,切换数据库,如: \c postgres; ,它的作用和SQL Server的 use postgres; 一样;另一个是\d,此命令是列出当前库下所有的表。

17. 我打算使用PostgreSQL做数据库服务器,但是从没打算使用psql当管理工具,所以还是要找个GUI的管理工具才行啊,也不知道哪个好,先随手抓过来一个用用看,pgAdmin4,下载地址在这里 ,
先建个Server看看都有什么

再给起个响亮点的名称

然后再配置服务器IP等信息

点了Save后并没有什么反应,在Servers上点击右键Refresh,还是没有什么效果,难道这货没有用?好吧,再试试IT人员的杀手级技巧吧,关了程序重新打开,这时...

看起来还不错,可以用图形化界面管理数据库,然后又是免费的,我们不能要求太多,对吧?
CentOS7下安装并简单设置PostgreSQL笔记的更多相关文章
- 学习笔记(1)centos7 下安装nginx
学习笔记(1)centos7 下安装nginx 这里我是通过来自nginx.org的nginx软件包进行安装的. 1.首先为centos设置添加nginx的yum存储库 1.通过vi命令创建一个rep ...
- Centos7下安装postgresql(tar包形式安装)
Centos7下安装postgresql(tar包形式安装) 1.官网下载地址: https://www.postgresql.org/ftp/source/ 2.将下载来tar包上传到linux服务 ...
- Docker学习笔记3:CentOS7下安装Docker-Compose
Docker-Compose是一个部署多个容器的简单但是非常必要的工具. 安装Docker-Compose之前,请先安装 python-pip,请参考我的另一篇博文CentOS7下安装python-p ...
- ubuntu下minicom安装和简单设置使用
minicom是一个串口通信工具. Ubuntu下的安装: 打开终端 sudo apt-get install minicom即可完成安装. 简单设置使用: 安装完成后第一次启动时运行 sudo mi ...
- centos7下安装php+memcached简单记录
1)centos7下安装php 需要再添加一个yum源来安装php-fpm,可以使用webtatic(这个yum源对国内网络来说恐怕有些慢,当然你也可以选择其它的yum源) [root@nextclo ...
- CentOS6.5 下安装 texlive2015 并设置 ctex 中文套装
0 卸载旧版本的 texlive 0.1 卸载 texlive2007 如果系统没有安装过texlive,则跳过第0步. 可以在终端中使用如下命令查询本机已经安装的tex和latex版本: [She@ ...
- centos7下安装指定版本mysql5.7.23
现在mysql版本已经到MySQL 8.0(GA)稳定版本了,所以需求是想简单又快速在centos7下安装指定版本例如MySQL 5.7(GA)版本有下面这种方法 首先需要到mysql官网这里下载对应 ...
- CentOS7 下安装 iSCSI Target(tgt) ,使用 Ceph rbd
目录 一.iSCSI 介绍 1. iSCSI 定义 2. 几种常见的 iSCSI Target 3. 优缺点比较 二.安装步骤 1. 关闭防火墙 2. 关闭selinux 3. 通过 yum 安装 t ...
- centos7 下安装rpm的mysql 5.7
在centos7下安装mysql5.7 一:下载mysql 去官网上去下载:这里我下载的二进制格式的 https://dev.mysql.com/downloads/mysql/ 去下载对应平台的my ...
随机推荐
- 利用Python进行数据分析(13) pandas基础: 数据重塑/轴向旋转
重塑定义 重塑指的是将数据重新排列,也叫轴向旋转. DataFrame提供了两个方法: stack: 将数据的列“旋转”为行. unstack:将数据的行“旋转”为列. 例如: 处理堆叠格式 ...
- 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)
我们上一篇<基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)>主要讲解了如何搭建一个实时数据通讯服务器,客户端与服务端是如何通讯的,相信通过上一篇的讲解,再配 ...
- Qt 拷贝文件目录
bool copyDir(const QString &source, const QString &destination, bool override) { QDir direct ...
- C#开发微信门户及应用(36)--微信卡劵管理的封装操作
前面几篇介绍了微信支付方面的内容,本篇继续微信接口的一些其他方面的内容:卡劵管理.卡劵管理是微信接口里面非常复杂的一个部分,里面的接口非常多,我花了不少时间对它进行了封装处理,重构优化等等工作,卡劵在 ...
- python 数据类型---列表使用 之一
列表的表现形式:其中的元素可以使任何数据类型,像 字符串,数字, 字典, 列表,变量 等任何类型 age = 28 name = ["Frank", "Lee" ...
- mybatis笔记1 基本的配置和操作
mybatis比较轻量,适合开发比较小型的或者业务比较复杂的系统: 相对于hibernate来说可以灵活的写sql,更灵活的处理遇到的业务逻辑: 可以说hibernate是pojo实体对db的orm映 ...
- JavaWeb_day08_EL JSTL
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day08 EL JSTL EL表达式 语法:${} ...
- MVC Request.IsAuthenticated一直false Request.Cookie获取不到cookie
项目中,在做登录验证时,用到了cookie,同一账户登陆,可以.切换其他账号时,就在也登录不上了,用原来的也不行.检查Request.IsAuthenticated一直false,而且Request. ...
- MyEclipse相关部署问题
部署Tomcat如果用MyEclipse自动部署方式很有可能出现一个问题: 服务器关联的这个项目却关联到其他的项目上,导致运行时还在运行以前的项目 解决方法: 将状态提示栏的service里的tomc ...
- ios UIWebView自定义Alert风格的弹框
之前开发过一个App,因为公司之前写好了网页版的内容和安卓版本的App,我进去后老板要求我ios直接用网页的内容,而不需要自己再搭建框架.我一听,偷笑了,这不就是一个UIWebView吗?简单! 但是 ...