PowerShell install 一键部署postgres15

news2024/11/23 0:29:52

postgres 前言

PostgreSQL 是一个功能强大的开源对象关系数据库系统,拥有超过 35 年的积极开发经验 这为其赢得了可靠性、功能稳健性和性能的良好声誉。

通过官方文档可以找到大量描述如何安装和使用 PostgreSQL 的信息。 开源社区提供了许多有用的地方来熟悉PostgreSQL, 了解其运作方式,并寻找职业机会。了解更多有关 如何与社区互动。

download postgres

postgres allpgadmin all文档
downloaddownload参考

前提条件

  • 开启wmi,配置网卡,参考 

postgres 一键自动化部署

  • 最终实现在线下载postgres,安装postgres,环境变量,初始化postgres数据库,用户密码配置,用户权限设置,远程连接设置,数据库创建postdb,vc依赖库安装,防火墙配置,安装包删除。
  • .\postgresql-15.3-1-windows-x64.exe --help #自动化部署参数查看,不同版本部署参数不同。

  • postgres/Report@123 #postgres 超级管理员用户名密码
  • postgresql_test/Report@123(用户拥有的权限LOGIN SUPERUSER CREATEDB CREATEROLE REPLICATION BYPASSRLS)
  • 创建一个库postdb,这个只是测试,数据实际生产环境执行去除或者更改
  • c:\postgresql\data #数据目录
  • c:\postgresql #安装目录
  • postgresql 5432 #postgresql端口
  • c:\postgresql\data\pg_hba.conf #远程连接授权
  • c:\postgresql\data\postgresql.conf #远程连接授权
  • if 判断是否存在psql 命令 if (-not (Get-Command psql -ErrorAction SilentlyContinue)) 
  • 依赖VisualC++ ,所有包含历史版下载
  • increase indent:Tab
  • decrease indent:Shift+Tab
powershell-install-postgresql.ps1
<# Powershell Install postgresql
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+  _____                       _____ _          _ _ +
+ |  __ \                     / ____| |        | | |+
+ | |__) |____      _____ _ _| (___ | |__   ___| | |+
+ |  ___/ _ \ \ /\ / / _ \ '__\___ \| '_ \ / _ \ | |+
+ | |  | (_) \ V  V /  __/ |  ____) | | | |  __/ | |+
+ |_|   \___/ \_/\_/ \___|_| |_____/|_| |_|\___|_|_|+
+ +++++++++++++++++++++++++++++++++++++++++++++++++++

# postgresql all download
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

# pgadmin all download
https://www.pgadmin.org/download/

#Obtain parameters for automatically installing postgresql
.\postgresql-15.3-1-windows-x64.exe --help
			 
# Powershell Install postgresql
# .\powershell-install-postgresql.ps1
#> 

function Install-postgresql {
	if (-not (Get-Command psql -ErrorAction SilentlyContinue)) {
        if ($?) {
			
	$drive = "c:"
	$postgresql_temporary = "postgresql_temporary"
	$postgresql = "postgresql"
	$postgresql_data = "data"
	
	#postgresql configuration files
	$postgres_user = "postgres"
	$postgres_password = "Repot@123"
	$postgres_port = "5432"
	$postgres_install_language = "en"
	
	$pg_hba_conf = "pg_hba.conf"
	$postgresql_conf = "postgresql.conf"
	
	#postgresql packag
	$postgresql_exe = "postgresql-15.3-1-windows-x64.exe"
	$vc_redist_64 = "vc_redist.x64.exe"
	$vc_redist_86 = "vc_redist.x86.exe"

	Write-Host "Create a directory for storing postgresql temporary" -ForegroundColor Green
	New-Item -ItemType Directory $drive\$postgresql_temporary

	$postgresql_related_download = @(
	"https://get.enterprisedb.com/postgresql/$postgresql_exe",
	"https://aka.ms/vs/17/release/$vc_redist_64",
	"https://aka.ms/vs/17/release/$vc_redist_86"
	)

	foreach ($url in $postgresql_related_download) {
	$fileName = Split-Path $url -Leaf
	$filePath = Join-Path $drive\$postgresql_temporary $fileName
	Invoke-WebRequest -Uri $url -OutFile $filePath
}
	Write-Host "install vc_redist x86 x64" -ForegroundColor Green
	Start-Process -FilePath "$drive\$postgresql_temporary\$vc_redist_64" -ArgumentList {/q /install} -Wait
	Start-Process -FilePath "$drive\$postgresql_temporary\$vc_redist_86" -ArgumentList {/q /install} -Wait

	Write-Host "install postgresql" -ForegroundColor Green
	Start-Process -FilePath $drive\$postgresql_temporary\$postgresql_exe -ArgumentList "--mode unattended --installer-language $postgres_install_language --prefix $drive\$postgresql --datadir $drive\$postgresql\$postgresql_data --serverport $postgres_port --serviceaccount $postgres_user --servicepassword $postgres_password --superaccount $postgres_user --superpassword $postgres_password --create_shortcuts 1" -Wait

	Write-Host "Create postgresql environment variables" -ForegroundColor Green
	$env:path += ";$drive\$postgresql\bin"
	setx PATH $env:path /M
	
	Write-Host "pg_hba.conf changes the default ram-sha-256 authentication mode to trust authentication" -ForegroundColor Green
	(Get-Content -Path "$drive\$postgresql\$postgresql_data\$pg_hba_conf") -replace "scram-sha-256", "trust" | Set-Content -Path "$drive\$postgresql\$postgresql_data\$pg_hba_conf"
	
	Write-Host "postgresql Remote connection pg_hba.conf" -ForegroundColor Green
	(Get-Content "$drive\$postgresql\$postgresql_data\$pg_hba_conf") + "`host    all             all             0.0.0.0/0             md5" | Set-Content "$drive\$postgresql\$postgresql_data\$pg_hba_conf"
	
	Write-Host "postgresql what IP address(es) to listen on postgresql.conf" -ForegroundColor Green
	(Get-Content -Path "$drive\$postgresql\$postgresql_data\$postgresql_conf") | Foreach-Object {if ($_.ReadCount -eq 59) {"listen_addresses = '*'`n$_"} else {$_}} | Set-Content -Path "$drive\$postgresql\$postgresql_data\$postgresql_conf"

    Write-Host "restart postgresql service" -ForegroundColor Green
    Restart-Service postgresql-x64-15
	
	Write-Host "check postgresql version" -ForegroundColor Green
	psql -V

	Write-Host "Create a user and assign the user login permission, super user permission, super role permission, database creation permission, replication permission, and backup permission" -ForegroundColor Green
	$postgres_password;psql -U postgres -c "create USER postgresql_test WITH LOGIN SUPERUSER CREATEDB CREATEROLE REPLICATION BYPASSRLS PASSWORD 'Repot@123';"
	
	#Write-Host "Create a user and assign the user login permission, super user permission, super role permission, database creation permission, replication permission, and backup permission" -ForegroundColor Green
	#$postgres_password;psql -U postgres -c "create user postgresql_test; alter user postgresql_test WITH PASSWORD 'Report@123';"
	#$postgres_password;psql -U postgres -c "ALTER USER postgresql_test WITH LOGIN;"
	#$postgres_password;psql -U postgres -c "alter user postgresql_test WITH SUPERUSER;"
	#$postgres_password;psql -U postgres -c "alter user postgresql_test WITH CREATEROLE;"
	#$postgres_password;psql -U postgres -c "alter user postgresql_test WITH CREATEDB;"
	#$postgres_password;psql -U postgres -c "alter user postgresql_test WITH REPLICATION;"
	#$postgres_password;psql -U postgres -c "alter user postgresql_test WITH BYPASSRLS;"
	
	Write-Host "Create a database and add users to the database" -ForegroundColor Green
	$postgres_password;psql -U postgres -c "create database postdb owner postgresql_test;"
	$postgres_password;psql -U postgres -c "grant all privileges on database postdb TO postgresql_test;"
	
	Write-Host "firewall postgresql port" -ForegroundColor Green
	New-NetFirewallRule -DisplayName $postgresql -Direction Outbound -profile any -LocalPort $postgres_port -Protocol TCP -Action Allow
	New-NetFirewallRule -DisplayName $postgresql -Direction Inbound -profile any -LocalPort $postgres_port -Protocol TCP -Action Allow
  
	Write-Host "Delete related postgresql_temporary installation packages and temporary directories" -ForegroundColor Green
	Remove-Item -Path "$drive\$postgresql_temporary\*.exe", "$drive\$postgresql_temporary" -Recurse -Force

            Write-Host "The postgresql Install Success..." -ForegroundColor Green
        } else {
            Write-Host "The postgresql Install Failed..." -ForegroundColor Red
            exit 1
        }
    } else {
        Write-Host "The postgresql Install already..." -ForegroundColor Yellow
    }
}

function Main {
	Install-postgresql
}

Main

执行安装

.\powershell-install-postgresql.ps1

输出结果展示

 

pgadmin 连接数据库

  • postgres/Report@123 #postgres 超级管理员用户名密码
  • postgresql_test/Report@123(用户拥有的权限LOGIN SUPERUSER CREATEDB CREATEROLE REPLICATION BYPASSRLS)

postgresql_test/Report@123(用户拥有的权限LOGIN SUPERUSER CREATEDB CREATEROLE REPLICATION BYPASSRLS) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/610666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

08 【生命周期 组件】

1. 生命周期 1.1 引出生命周期 生命周期 又名生命周期回调函数,生命周期函数、生命周期钩子是什么,Vue在关键时刻帮我们调用的一些特殊名称函数生命周期函数的名字不可更改,但函数的具体内容是根据程序员需求编写的生命周期函数中的this指向的是vm或组件实例对象 <div i…

贺斌教授团队:多少冥想训练才能提高脑机接口的性能?

冥想训练可以帮助人们学会更好地控制脑机接口。但是一项新的研究发现&#xff0c;单次的冥想练习不足以提高表现。发表在《Frontiers in Human Neuroscience》的一项研究结果表明&#xff0c;人们需要更长时间的冥想才能体验到明显的改善。 # 脑机接口性能如何提高&#xff1f;…

kafka 集群是如何选择 leader,你知道吗?

前言 kafka集群是由多个broker节点组成&#xff0c;这里面包含了许多的知识点&#xff0c;以下的这些问题你都知道吗? 你知道topic的分区leader是怎么选举的吗&#xff1f; 你知道zookeeper中存储了kafka的什么信息吗&#xff1f;起到什么做呢&#xff1f; 你知道kafka消息…

基于matlab地形可视化仿真

一、前言 此示例说明了将常规可用的数字高程模型转换为 X3D 格式以用于虚拟现实场景的可能性。 作为地形数据源&#xff0c;已使用南旧金山 DEM 模型。场景中包含一个简单的预制波音 747 模型&#xff0c;以展示从多个来源即时创建虚拟场景的技术。 此示例需要映射工具箱。 二、…

高通全面进攻智能汽车「路径」

“统一技术路线图”&#xff0c;被高通技术公司高级副总裁兼汽车业务总经理Nakul Duggal着重提及。 5月26日&#xff0c;高通在苏州举办汽车技术与合作峰会&#xff0c;Nakul Duggal在峰会上坦言&#xff0c;“我们在所有业务领域、所有产品开发中都遵循‘统一技术路线图’&am…

【owt】WebrtcNode, publish-sdp offer 流程(2)

流程图 创建MediaStream&#xff0c; MediaStream一方面作为从客户端接收到媒体数据&#xff0c;另外一方面做为视频源&#xff1b;创建VideoFrameConstructor&#xff0c;VideoFrameConstructor 把sink 注册到MediaStream&#xff0c;这样MediaStream&#xff08;继承了MediaS…

运维小白必学篇之基础篇第七集:磁盘管理实验

磁盘管理实验 实验作业&#xff1a; 1、添加1块磁盘&#xff0c;并查看&#xff08;lsblk&#xff09; 2、使用MBR分区表的格式对添加的磁盘划分分区&#xff0c;完成以下操作&#xff1a; 1、创建3个主分区&#xff0c;每个分区大小为2个GB 2、创建扩展分区&#xff0c;将剩…

前端技术搭建俄罗斯方块(内含源码)

The sand accumulates to form a pagoda ✨ 写在前面✨ 功能介绍✨ 页面搭建✨ 样式设置✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了扫雷游戏&#xff0c;今天还是继续按照我们原定的节奏来带领大家完成俄罗斯方块游戏&#xff0c;功能也比较简单简单&#xff0c;也…

【源码篇】基于SSM的办公管理系统

1、项目介绍 基于SSM的办公管理系统主要是对于办公用品的申领进行管理&#xff0c;系统分为三种角色&#xff0c;超级管理员、企业职工、审核员&#xff0c;每种角色拥有不同的权限菜单 主要功能模块有&#xff1a; 系统管理(用户管理、角色管理、菜单管理、个人信息管理、修…

ArrayList源码

介绍 ArrayList非线程安全。ArrayList基于动态数组&#xff0c;是一种线性表。随机访问友好&#xff0c;插入和删除效率低。 ​ 增删慢&#xff1a;每次删除元素&#xff0c;都需要改变数组长度、拷贝以及移动数组长度 ​ 查询快&#xff1a;由于数组在内存中是一块连续空间…

Python实战基础20-解密文件及目录操作

任务1 为泸州驰援湖北的89名白衣勇士点赞 【任务描述】 设计python程序&#xff0c;实现用户可以为泸州驰援湖北的89名白衣勇士点赞留言。用户点赞留言内容保存到本地txt文件中。 import os # 导入os模块 import random # 导入随机模块 import string # 导入string模块# 定义…

序列化与反序列化深入理解

序列化与反序列化深入理解 1 介绍1.1 概述1.2 序列化实现的需求 2 常用序列化实现函数序列化语言内置开源序列化实现 3 各序列化实现比较4 各序列化实现概述XMLJSONProtobufJava 内置TLVVLE&#xff08;Variable Length Encoding&#xff09; 5 flex & bison5.1 介绍应用解…

MyBatis-4

MyBatis 工作原理 形式上的应用为&#xff1a; UserMapper userMapper MyBatisSessionFactory.getMapper(UserMapper.class); List<User> userList userMapper.selectByExample(example)真正执行的操作为: SqlSession session MyBatisSessionFactory.getSession();…

聊天更有趣ChatGPT【再次更新】第三方插件

ChatGPT再次更新&#xff0c;第三方插件让你的聊天更有趣 你是否曾经想过&#xff0c;如果你能够和你最喜欢的明星、作家或者历史人物聊天&#xff0c;会是什么样的体验&#xff1f;你是否曾经想过&#xff0c;如果你能够和你的朋友一起玩一些有趣的游戏、挑战或者测试&#x…

spring注解驱动开发(BEAN注册方式与生命周期)

目录 容器中注册BEAN的方式 BEAN生命周期 容器中注册BEAN的方式 包扫描组件标注注解 ComponentScan(basePackages {"com.an.spring.condition"}) Service Component Controller RepositoryBEan方式【导入第三方包里面的组件】 ComponentScan(basePackages {&quo…

chatgpt赋能python:Python处理雷达数据

Python处理雷达数据 雷达技术是一种主要用于测量目标距离、速度和方位的技术。在雷达系统中&#xff0c;雷达接收器接收到的信号经过一系列的处理才能得到有效的数据。在这一过程中&#xff0c;Python语言得到了广泛应用。本文将介绍Python如何处理雷达数据。 雷达数据的格式…

linuxOPS基础_ssh概念详解

ssh 什么是SSH SSH&#xff08;Secure Shell&#xff0c;安全外壳&#xff09;是一种网络安全协议&#xff0c;通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式&#xff0c;例如Telnet、FTP&#xff0c;使用明文传输数据&#xff0c;存在很多…

Openlayers 教程 - 基于 Openlayers api 实现空间查询(客户端):点选、范围查询

Openlayers 教程 - 基于 Openlayers api 实现空间查询&#xff08;客户端&#xff09;&#xff1a;点选、范围查询 客户端空间查询核心代码在线示例 客户端空间查询 在地理信息系统中&#xff0c;空间查询有的非常重要的作用&#xff0c;几乎所有地图相关的业务系统都需要空间…

青少年C++编程等考有这么多??机构到底该带孩子考哪个?

随着信息学的普及与发展&#xff0c;越来越多的孩子开始学习C&#xff0c;参加编程等考来检验C的学习成果、作为也逐渐成为了一个共识&#xff0c;跟C有关的等考究竟有哪些&#xff0c;哪个等考含金量够高&#xff0c;能够客观、有效地检验学习成果呢&#xff1f; 在这里整理了…

解决Fortify漏洞:Access Specifier Manipulation

目录 1. 什么是Fortify漏洞 2. 漏洞描述 示例&#xff1a; 3. 漏洞原因 4. 解决方法 示例&#xff1a; 1. 什么是Fortify漏洞 Fortify 是一种静态代码分析工具&#xff0c;可用于识别源代码中的安全漏洞和错误。Fortify 检查程序是否存在潜在的安全漏洞&#xff0c;例如 …