设为首页 收藏本站
查看: 1851|回复: 0

[经验分享] Ubuntu下安装postgreSQL及配置

[复制链接]

尚未签到

发表于 2016-11-21 09:48:48 | 显示全部楼层 |阅读模式
  每天晚上疲劳的睡在床上时,才感觉真真切切地过了一天。人生最重要的不仅是努力,还有方向。压力不是有人比你努力,而是比你牛叉几倍的人依然比你努力。即使看不到未来,即使看不到希望,也依然相信,自己错不了,自己选的人生错不了。第二天叫醒我的不是闹钟,其实,还是梦想!!
  2013-07-14 20:08:58
  1.             准备条件
  1)         装了GCC的ubuntu操作系统 (我安装在了虚拟机上)
  2)         下载好的postgreSQL 9.19源码或二进制包(二进制包也可以在ubuntu上直接获取)
  2.             postgreSQL安装
  postgreSQL安装分为源码安装和二进制安装,各有各的好处,源码安装可以自己制定一些参数和设置(详细参考官方文档);二进制安装可以不需要怎么配置就可以直接使用了,简单、方便。但做正规项目部署的话,还是建议使用源码安装,可以针对项目进行灵活的配置。
  另问题:我安装上ubuntu后,系统当中并没有GCC,我是直接上网apt-get install的;看安装包(ubuntu-12.04.2-server-amd64)中有GCC的目录,但安装时老是提示缺少依赖,找依赖要找一大堆,麻烦,有知道怎么使用系统安装包装GCC的同学,请共享下经验呗。
  2.1      二进制包安装
  1)         在线获取postgreSQL9.1,命令如下:apt-get install postgresql-9.1;不要选错了。之后选择“Y”即可自动安装。
DSC0000.png

   DSC0001.png
  安装完成后postgreSQL已经自动启动,如下:
DSC0002.png

  2)         安装完成后只需关注刚初始化的数据库管理文件和数据文件的存放位置。
  数据文件:/var/lib/postgresql/9.1/main/
  数据库配置文件:/etc/postgresql/9.1/main
  管理文件和lib库文件:/usr/lib/postgresql/9.1/,里面包括bin和lib目录
  3)         安装完成后,postgreSQL会创建一个针对数据库操作的postgres操作系统用户,通过root的su passwd postgres 可以更改系统postgres用户的密码。我们切换到postgres用户下面,并执行psql命令(可以直接使用psql命令,是因为二进制包的配置在安装时已经将$PATH环境变量写好了),可以看到已经进入到数据中。
DSC0003.png

  4)         此时,postgresql数据库已经可以在本机访问了,但要通过客户端(比如windows上装的pgAdmin3,或pgpool-II等第三方组件等),还需要配置两个文件:pg_hba.conf(连接数据库的身份验证方式)、postgresql.conf(数据的配置文件),这些文件都在 数据库配置文件:/etc/postgresql/9.1/main 目录中。其中的配置在下面会讲到。
  2.2  源码安装
  1)         将下载好的源码包(postgresql-9.1.9.tar.gz)上传并进入到/usr/local/src目录下面。如何做linux和windows之间的共享,网上有一大批文章可以参阅,在这里不再做讲解。我使用的是简单的samba共享。
  2)         解压缩源码包:tar –zvxf postgresql-9.1.9.tar.gz
DSC0004.png

  3)         进入刚解压缩出的postgresql-9.1.9目录:cd postgresql-9.1.9/  可以看到如下文件:
DSC0005.png

  4)         此时,我们需要编译postgresql,--prefix 参数用于指定安装目录,我们先在/usr/local/下创建postgresql目录,命令如下:mkdir /usr/local/postgresql(图就不贴了);其中还有很多参数,请大家参考官方文档。
  在安装过程中会出现缺少两个组件的依赖,readline和zlib;readline作用是用psql进入数据库后对操作的记忆,即退出psql后再进入,使用“↑”或“↓”时显示之前打出的命令,跟dos操作差不多。Zlib的作用是后期对日志的压缩。当然,在编译的时候也可以使用--without-readline --without-zlib来忽略这两个错误,但我们现在还是安装上吧。从网上直接获取,apt-get install libreadline6-dev zlib1g-dev
  编译postgresql:./configure --prefix=/usr/local/postgresql
  make world或make(world指全部编译,也可以不用加)
  make install-world或make install
  5)         编译安装完成后在/usr/local/postgresql目录下会出现postgresql的一些管理文件、头文件、库文件等目录。如下图:
DSC0006.png

  此时,只是安装了postgresql数据库的软件而已,还没有初始化数据库。先在/usr/local/postgresql目录下面创建一个data目录(当然也可以存放于其他地方),用于存放初始化的数据库的文件。
DSC0007.png

  现在我们需要一个操作系统级别的管理数据库的组(定义为postgres)和用户(定义为postgres)并修改postgres密码为123,操作命令:
  groupadd postgres
  useradd –g postgres postgres
  passwd postgres
DSC0008.png

  对新创建postgres用户赋予data目录的自由操作权限。命令:chown –R postgres /usr/local/postgresql/data
DSC0009.png

  一切准备就绪,我们切换到postgres用户,并进入到bin目录,使用initdb命令初始化第一个数据库。Initdb中我们需要--encoding参数为utf8,设置数据库编码为utf8,我们将数据库初始化到/usr/local/postgresql/data目录中。其完整命令为:initdb --encoding=utf8 –D /usr/local/postgresql/data
DSC00010.png

  至此数据创建完毕,可以看到启动数据库命令的提示,有两种方法启动:(1)./postgres –D ../data (2)./pg_ctl –D  ../data –l logfile start,相对路劲为/usr/local/postgresql/bin;
  如果想在同一台机器中部署两个数据库实例,则可以再使用initdb命令将数据库初始化到另一个目录中,此目录要更改为postgres用户拥有权限,初始化完成后更改端口即可。
DSC00011.png

  2.3  postgreSQL安装完成后的配置
  2.3.1外部远程访问postgreSQL
  postgreSQL数据库初始化安装完毕后,默认只能在本机访问,而其他电脑无法访问本机的postgreSQL。如果需要外部访问postgreSQL,则需要修改几个文件,postgresql.conf、pg_hba.conf;
  找到对应的数据目录,如果按本文安装,使用二进制包安装的,数据库配置目录为:/etc/postgresql/9.1/main;如果是按源码安装的,数据库目录为:/usr/local/postgresql/data;打开后目录中可以看到有postgresql.conf、pg_hba.conf文件。
  1)         修改postgresql.conf文件:
  此文件为数据库的配置文件,包括postgreSQL的连接数量配置、共享内存的配置、日志配置、数据库复制配置等管理用的配置文件。以后配置集群等需要修改此文件。
  找到#- Connection Settings - 节下的
  #listen_addresses=’localhost’ 改为listen_addresses=’*’ (’#’号注释不要,localhost改为’*’,接受为任何连接)
  #port=5432改为port=5432(’#’号注释不要)
  2)         修改pg_hba.conf文件:
  此文件为数据库的连接配置文件,用来限制或允许什么样的地址以什么样的访问方式可以访问postgreSQL。详细的内容不再多讲,此文件头部有注释,相信大家都可以看的懂。
  在此文件中增加如下行:
  host    all             all             0.0.0.0/0               md5
  解释下含义:
  文件格式为:host  DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
  Host:主机访问类型,local为Unix-domain socket连接访问方式,host为TCP/IP socket或SSL-encrypted TCP/IP socket连接访问方式。
  第一个all:要访问的数据库,all则为全部。
  第二个all:以那个用户访问数据库,all则为全部
  0.0.0.0/0:允许所有IP访问
  md5:以md5的连接访问postgreSQL,如果是trust,则连接postgreSQL不需要密码。但为安全起见,我们使用md5。
  至此,两个文件都已经更改完毕,重新启动postgreSQL即可。切换postgres用户,输入重启数据库命令:./pg_ctl –D ../data restart
  但此时使用pgadmin-III连接postgreSQL时会出现以下错误FATAL:  password authentication failed for user "postgres",
DSC00012.png

  原因为初始化数据库后,系统会自动添加一个无密码的postgres用户,而且使用本机访问数据库时是trust方式的(详见pg_hba.conf文件),因此在本机访问数据库可以不需要密码,但非本机的连接则需要密码,所以我们需要在数据库中增加postgres用户的密码。
DSC00013.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303284-1-1.html 上篇帖子: Postgresql:表空间 下篇帖子: postgresql libpq c接口 操作数据库例子
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表