本文提供数据库安装脚本,有部分需要优化,就是脚本中的方法执行存在前后依赖,但是代码里面没有对上一个执行结果进行判断,如果提供的路径和安装包没有问题,脚本能够正常执行

  1. #!/bin/bash
  2. # install postgre
  3. # base_path=$(cd $(dirname ${BASH_SOURCE[]}); pwd )
  4. base_path="/opt"
  5. # Pg database installation package name
  6. pg_name="./postgresql-9.6.15-1-linux-x64-binaries.tar.gz"
  7. # Pg database installation path
  8. pg_deploy_path="$base_path/postgreSQL"
  9. # Directory of data stored in the pg database
  10. pg_data_path="${pg_deploy_path}/data"
  11. # Directory of data stored in the pg database
  12. user_name='pguser'
  13.  
  14. # unzip pg
  15. function pg_untar(){
  16. if [ -d ${pg_deploy_path} ];then
  17. echo "pg has been installed"
  18. else
  19. if [ ! -e ${pg_name} ];then
  20. echo "Missing pg installation package"
  21. else
  22. mkdir -p ${pg_deploy_path}
  23. tar -zxf ${pg_name} -C ${pg_deploy_path}
  24. fi
  25. fi
  26. }
  27.  
  28. # Create a Linux user to log in to the PG database
  29. function pg_create_user(){
  30. # user_exist=`cat /etc/passwd | grep '^${user_name}:' -c`
  31. egrep "^${user_name}" /etc/passwd >/dev/null
  32. if [ $? -eq ]; then
  33. pass=$(perl -e 'print crypt($ARGV[0], "password")' $user_name)
  34. useradd -m -p $pass ${user_name}
  35. #useradd -m -p 'postgres' ${user_name}
  36. [ $? -eq ] && echo "user [${user_name}] has been added to system!" || echo "Failed to add user [${user_name}]"
  37. else
  38. echo "user [${user_name}] exists"
  39. fi
  40. }
  41.  
  42. #init pg
  43. function pg_init(){
  44. #Create a data directory
  45. mkdir -p ${pg_data_path}
  46. touch ${pg_deploy_path}/logfile
  47. #Grant user access
  48. chown -R ${user_name} ${pg_data_path}
  49. chown ${user_name} ${pg_deploy_path}/logfile
  50.  
  51. # init database
  52. su - ${user_name} -c "${pg_deploy_path}/pgsql/bin/initdb -D ${pg_data_path}"
  53. }
  54.  
  55. #Modify config of the pg database
  56. #
  57. function pg_modify_config(){
  58. id_path=${pg_data_path}/postgresql.conf
  59. local_path=${pg_data_path}/pg_hba.conf
  60. localip=$(/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:")
  61. if [ -d ${pg_data_path} ];then
  62. chown -R 'root' ${pg_data_path}
  63. #Modify listening ip
  64. sed -i "s@#listen_addresses = 'localhost'@listen_addresses = \'${localip}\'@g" $id_path
  65. #Modify Trust client ip
  66. #sed -i "s@#listen_addresses = 'localhost'@listen_addresses = \'${localip}\'@g" $id_path
  67. sed '86 ahost all all 0.0.0.0/0 trust' -i $local_path
  68. chown -R ${user_name} ${pg_data_path}
  69. else
  70. echo "You need to initialize the database with the command:\n\t ${pg_deploy_path}/pgsql/bin/initdb -D ${pg_data_path} "
  71. fi
  72. }
  73.  
  74. # start pg database
  75. function pg_start(){
  76. su - ${user_name} -c "${pg_deploy_path}/pgsql/bin/pg_ctl -D ${pg_data_path} -l ${pg_deploy_path}/logfile start"
  77. }
  78. # create default database bms_ops
  79. function pg_createdb(){
  80. sleep 3s
  81. default_db="bms_ops"
  82. su - ${user_name} -c "${pg_deploy_path}/pgsql/bin/createdb -O ${user_name} ${default_db}"
  83. }
  84. #Open port
  85. function pg_open_port(){
  86. isopen=$(firewall-cmd --query-port=/tcp)
  87. if [ 'no' == $isopen ];then
  88. firewall-cmd --add-port=/tcp --permanent>/dev/null
  89. firewall-cmd --reload>/dev/null
  90. else
  91. echo "port 5432 already opened"
  92. fi
  93.  
  94. }
  95.  
  96. echo "============== start install pg =============="
  97. if [ -d ${pg_deploy_path} ];then
  98. echo "pg has been installed"
  99. else
  100. pg_untar
  101. pg_create_user
  102. pg_init
  103. pg_modify_config
  104. pg_start
  105. pg_createdb
  106. pg_open_port
  107. fi
  108. echo "============== finish installing pg =============="

linux安装postgresql数据库的更多相关文章

  1. Linux 安装 PostgreSQL

    Linux 安装 PostgreSQL CentOS 7 安装 PostgreSQL 10 步骤 官网安装步骤,选择服务器和数据库版本,会给出相应的安装命令 # 安装 yum install -y h ...

  2. Windows Azure上的Odoo(OpenERP)-1.创建Ubuntu虚拟机,安装PostgreSQL 数据库

    前提是您必须拥有Windows Azure的账号,如果没有的话,可以去Windows Azure 中国区网站申请免费试用账号.哈哈,我就是第一批申请的试用账号,感觉自己挺幸运的.申请的过程就不写了,请 ...

  3. Windows安装PostgreSQL数据库 无法初始化数据库问题

    背景 由于项目的需要,使用PostgreSQL数据库,因此在Windows上安装PostgreSQL数据库.但是在安装后,无法访问本地数据库,这个时候查看/data目录,没有任何文件.而且安装过程中, ...

  4. linux下PostgreSQL数据库的源码安装

    实验环境>>>>>>>>>>>>>>>>>>操作系统:CentOS release 6.3 ...

  5. [zz]安装PostgreSQL数据库(Linux篇)

    0.编译环境 Linux: CentOS 5.5 gcc: 4.1.2 1. 安装PostgreSQL 1) 解压postgresql-9.1.7.tar.bz2 #tar jxvf postgres ...

  6. 安装PostgreSQL数据库(Linux篇)

    0.编译环境 Linux: CentOS 5.5 gcc: 4.1.2 1. 安装PostgreSQL 1) 解压postgresql-9.1.7.tar.bz2 #tar jxvf postgres ...

  7. [亲测有效] - Linux安装PostgreSQL

    本文章来为各位介绍一篇关于postgresql 9.4 在linux环境的安装步骤详解,希望文章能够对各位新手朋友带来帮助的哦.   环境说明系统:centos 6.4 64位软件:postgresq ...

  8. linux安装postgresql

    第一步在编译安装postgresql源码的时候,需要用到以下依赖,若本机没有的话,需要提前安装依赖环境,执行以下命令:yum install gcc gcc-c++yum install zlib-d ...

  9. 国产龙芯服务器源码安装PostgreSQL数据库的方法

    1. 公司最近有一些国产化项目的需求, 要求在国产CPU的服务器上面安装pg数据库等. 2.. 但是差查了下中标麒麟的官网,在龙芯MIPS的操作系统包源里面仅有 postgreSQL 9.2 版本的r ...

随机推荐

  1. tensorflow简介、目录

    目前工作为nlp相关的分类及数据治理,之前也使用tensorflow写过一些简单分类的代码,感受到深度学习确实用处较大,想更加系统和全面的学习下tensorflow的相关知识,于是我默默的打开了b站: ...

  2. Spring Cloud Hystrix 请求熔断与服务降级

    在Java中,每一个HTTP请求都会开启一个新线程.而下游服务挂了或者网络不可达,通常线程会阻塞住,直到Timeout.你想想看,如果并发量多一点,这些阻塞的线程就会占用大量的资源,很有可能把自己本身 ...

  3. 《SQL 进阶教程》 查找局部不一致的数据

    -- 从下面这张商品表里找出价格相等的商品的组合 select * from products p1LEFT JOIN products p2on p1.price = p2.price and p1 ...

  4. Electromagnetic

    1. 电磁辐射 2. 电磁频谱 3. 可见光 4. 微波 5. 更多相关链接 1. 电磁辐射 https://en.wikipedia.org/wiki/Electromagnetic_radiati ...

  5. python学习 —— seaborn、matplotlib、pandas、numpy package的混合使用

    这里使用了Titanic Machine learning数据集,然后通过Seaborn的函数来拟合和绘制回归线,matplotlib进行可视化. 先来一个简单的测试: import pandas a ...

  6. C++ class without pointer members

      写在前面 Object Oriented class 的分类:带指针的class和不带指针的class, class 的声明         这里有一个inline的概念,写在类里面的默认为inl ...

  7. 1. 使用 Docker 安装 Kong

    Create a Docker network $ docker network create kong-net Start Database $ docker run -d --name kong- ...

  8. java实现邮箱发送邮件

    第一步:封装发件人账号密码 import javax.mail.Authenticator;import javax.mail.PasswordAuthentication; /** * 发件人账号密 ...

  9. vue 输入框数字、中文验证

    vue项目是基于element框架做的,在做form表单时,要做些验证,element框架也提供了自定义验证 下面是一些常见的验证 只允许输入数字: 可以直接用框架的rule去验证,但必须在model ...

  10. input不显示边框

    参考:https://www.cnblogs.com/mmykdbc/p/6200963.html input{ border: none; outline: none; }