通过powershell远程访问postgresql数据库所在的服务器,临时开通用户访问数据库的权限,并在约定时间内关闭

该PowerShell脚本(pgallow.py)用于允许指定用户在给定的IP地址和持续时间内访问PostgreSQL数据库。它通过SSH连接到远程服务器,修改pg_hba.conf配置文件,加载新配置,并在设定时间后恢复原状。同时,脚本会终止所有非当前进程的数据库连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下是powershell的脚本内容
将脚本保存为pgallow.py

param (
    [Parameter(Mandatory = $true)][string]$user,
    [Parameter(Mandatory = $true)][string]$ip,
    [Parameter(Mandatory = $true)][string]$duration
)

# 设置数据库服务器信息
$server_ip = "192.168.2.53"
$server_user = "root"
$server_password = "123"
$server_ssh_port = 22

# 定义跨平台的 SSH 命令
$ssh_command = @"
echo '$server_password' | C:\tools\plink.exe -ssh $server_user@$server_ip -P $server_ssh_port -pw '$server_password' -hostkey 'ssh-ed25519 255 SHA256:sroxSvZ77nHCuAUKwZqSiwzMlC7U5ZmHAdOUuz5THc0' -batch -t "echo 'host all $user $ip/32 md5' >> /home/postgres/pgdata/pg_hba.conf; psql -U postgres -p 5544 -q -c 'select pg_reload_conf();'; sleep $duration; sed -i '/host all $user $ip\/32 md5/d' /home/postgres/pgdata/pg_hba.conf; psql -U postgres -p 5544 -q -c 'select pg_reload_conf(); select pg_terminate_backend(pid) from pg_stat_activity where pid <> pg_backend_pid() and client_addr = `'$ip`';'"
"@

# 运行 SSH 命令
Invoke-Expr
<think>好的,我现在需要帮助用户在Windows系统上安装和配置PostgreSQL数据库环境。用户已经提供了几个相关的引用,我需要仔细查看这些引用内容,提取有用的信息,按照用户的要求组织回答。 首先,引用[1]提到了下载和安装PostgreSQL的步骤,包括访问官方网站、运行安装程序、选择安装位置等。这部分内容可以作为安装步骤的基础。引用[3]提到了初始化数据库集群目录时可能遇到的问题,以及使用initdb命令重新初始化的方法,这点需要注意在安装后的配置步骤中是否涉及。引用[4]主要是介绍PostgreSQL的背景,可能对用户帮助不大,但可以忽略。引用[2]关于备份和恢复的内容虽然相关,但用户当前的问题集中在安装和配置,暂时不需要这部分,但可能在相关问题中提到。 接下来,用户要求回答结构清晰,分步骤说明,生成相关问题。根据示例中的格式,应该先给出安装步骤,然后配置步骤,每个步骤详细说明。同时,需要将引用的内容自然地融入回答中,在末尾添加引用标识。例如,引用[1]中的下载安装步骤,引用[3]中的初始化数据库命令。 我需要确保所有行内数学表达式使用$...$,但这里可能用不上。独立公式也没有涉及,所以可能不需要。语法正确,用中文回答。生成的相关问题需要与安装配置相关,比如性能优化、验证安装、常见错误处理等。 在组织步骤时,需要注意逻辑顺序:下载、安装、配置、验证。安装过程中可能需要选择组件、设置密码、端口等。配置部分可能需要提到数据目录的初始化,如果用户遇到目录无效的情况,可以引用[3]中的initdb命令。最后,验证安装是否成功,可以通过psql命令行工具或者pgAdmin。 然后,生成相关问题,例如如何配置远程访问、如何修改默认端口、如何备份恢复数据(引用[2]的内容可能用在这里)。确保每个步骤中的引用正确对应,比如安装步骤引用[1],数据目录问题引用[3]。 需要检查是否有遗漏的步骤,比如安装后的服务启动,或者环境变量的设置。引用[1]中提到了默认安装路径,但用户可能需要自定义路径。还要注意安装过程中设置超级用户密码的部分,这是关键步骤。 可能还需要提醒用户注意防火墙设置,如果后续需要远程连接的话,但用户的问题暂时是安装和配置环境,可能不需要深入,但可以作为相关问题提到。 最后,确保回答中的引用标记正确,例如在安装步骤末尾添加[^1],在初始化数据库部分添加[^3]。</think>### Windows系统安装配置PostgreSQL数据库指南 #### 一、安装步骤 1. **下载安装程序** 访问[PostgreSQL官网](https://www.postgresql.org/),进入"Download"页面,选择适用于Windows的最新版本(如15.x),下载以`-win-x64.exe`结尾的安装包[^1]。 2. **运行安装向导** - 双击安装程序,按以下流程操作: - 选择安装目录(默认`C:\Program Files\PostgreSQL`) - 勾选核心组件:**PostgreSQL Server**、**pgAdmin 4**(图形管理工具)、**Stack Builder**(扩展工具) - 设置数据库超级用户密码(需包含字母、数字和符号) - 配置端口号(默认`5432`,若无冲突无需修改)[^1] 3. **完成安装** 安装完成后取消勾选"Launch Stack Builder",直接点击**Finish**。 #### 二、配置验证 1. **检查服务状态** 打开Windows服务管理器(`services.msc`),确认`postgresql-x64-15`服务状态为"正在运行"。 2. **连接数据库** - **方法1:使用psql命令行** 打开`cmd`或PowerShell执行: ```bash psql -U postgres -h 127.0.0.1 ``` 输入安装时设置的密码,出现`postgres=#`提示符即表示成功。 - **方法2:使用pgAdmin** 在开始菜单打开pgAdmin,右击"Servers" > "Create" > "Server",填写: ```yaml Name: Localhost Host: 127.0.0.1 Port: 5432 Username: postgres Password: [安装时设置的密码] ``` 3. **处理数据目录问题** 若安装后启动失败提示数据目录无效,需手动初始化: ```bash # 以管理员身份运行cmd cd "C:\Program Files\PostgreSQL\15\bin" initdb.exe -D "C:\Program Files\PostgreSQL\15\data" ``` 完成后重启服务[^3]。 #### 三、环境配置建议 - **修改环境变量**:将`C:\Program Files\PostgreSQL\15\bin`加入系统PATH变量,方便命令行调用。 - **防火墙设置**:若需远程访问,在防火墙中开放TCP 5432端口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值