PostgreSQL命令行安装【静默安装】的全部流程

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 想要实现通过GUI软件一键安装PostgreSQL的功能,免去手动安装的过程,也可以添加一些对pgsql服务的管理功能。这就要用到PostgreSQL通过命令行静默安装,放在软件中实现控制...

想要实现通过GUI软件一键安装PostgreSQL的功能,免去手动安装的过程,也可以添加一些对pgsql服务的管理功能。

这就要用到PostgreSQL通过命令行静默安装,放在软件中实现控制,安装完成后,并内置初始化需要的数据库和表。

下载pgsql的zip安装版本

PostgreSQL下载地址:https://www.postgresql.org/download/

选择免安装的二进制zip包

下面可以看到PostgreSQL支持的window平台,比如14、13版本支持64位的windows 2019/2016。可以据此选择需要的版本。

选择一个window版本下载

pgsql二进制包安装和基本使用

【如果仅作为一个应用程序的内置数据库,则不需配置全局使用的PATH环境变量、配置或使用pgAdmin管理工具】,window服务或开机启动是需要配置的,需要长久运行

1. 解压二进制包

  • 将下载好的PostgreSQL二进制包解压到指定目录

解压后获得pgsql文件夹,如下C:\PostgreSQL\pgsql

  • 在解压后的pgsql主目录下创建data目录,作为数据存储目录

2. 配置PATH环境变量【可选】

此处介绍两种方式配置环境变量,powershell和vbs【也可以参考通过bat/cmd添加path环境变量】

最简单的方法是通过系统属性,高级系统设置,环境变量中设置。更更简单的是不设置此项。

powershell中配置环境变量

将通过C:\PostgreSQL\pgsql下的bin添加到PATH,$target='Machine'系统变量,$path判断是否以';'结尾。

$addPath='C:\PostgreSQL\pgsql\bin'; $target='Machine'; $path = [Environment]::GetEnvironmentVariable('Path', $target); if($path -match ";$"){ $newPath = $path + $addPath; } else { $newPath = $path + ';' + $addPath; } [Environment]::SetEnvironmentVariable('Path', $newPath, $target)

通过vbs配置环境变量

在pgsql文件夹下创建env.vbs文件,用于添加PATH,文件内容如下:

'on error resume next ''出错继续执行

'以管理员权限运行
Set WshShell = WScript.CreateObject("WScript.Shell") 
If WScript.Arguments.Length = 0 Then 
  Set ObjShell = CreateObject("Shell.Application") 
  ObjShell.ShellExecute "wscript.exe" _ 
  , """" & WScript.ScriptFullName & """ RunAsAdministrator", , "runas", 1 
  WScript.Quit 
End if

'添加PATH
set sysenv=CreateObject("WScript.Shell").Environment("system") 'system environment array

' WScript.ScriptFullName
set fso=createobject("scripting.filesystemobject")
Path = fso.GetParentFolderName(WScript.ScriptFullName) '正确

sysenv("Path")=sysenv("Path") + ";" + Path + "\bin" '正确

wscript.echo "PostgreSQL PATH Env Set Success!"

双击运行env.vbs文件,得到弹窗PostgreSQL PATH Env Set Success!,则PATH环境变量添加成功。

也可修改系统环境变量 system,为用户环境变量 USER

最好添加$path判断是否以';'结尾。

注意开头的管理员权限的代码一定要加上,否则会保存:

3. 初始化数据库

注: 推荐以管理员权限或超级用户身份运行后续的各命令。

Windows下操作此处不需要管理员权限,但后续注册服务和启动服务需要。linux下尽量指定超级用户身份。

  • pgsql/bin目录下(以自己安装解压后的pgsql目录为准),以管理身份打开命令行或PowerShell窗口

以管理员打开powershell,进入pgsql/bin目录【如果设置第2步的PATH环境变量,则不需要进入此目录】

PS C:\WINDOWS\system32> cd C:\PostgreSQL\pgsql\bin\
PS C:\PostgreSQL\pgsql\bin>
  • initdb -D <data_path>初始化数据库,数据文件存储在data文件夹中

命令:initdb -D C:\PostgreSQL\pgsql\data【不推荐此命令】

  • 正确的或更为推荐的数据库初始化命令

initdb.exe 执行时默认使用本地化语言,进行数据库的字符编码、文本搜索等的初始化,相关设置为参数为-E, --encoding=ENCODING--locale=LOCALE

可以仔细看下之前的初始化时的输出:

PS C:\PostgreSQL\pgsql\bin> initdb -D C:\PostgreSQL\pgsql\data
属于此数据库系统的文件宿主为用户 "win7hostsver".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "Chinese (Simplified)_China.936"进行初始化.
本地化隐含的编码 "GBK" 不允许作为服务器端的编码.
默认的数据库编码将采用 "UTF8" 作为代替.
initdb: 无法为本地化语言环境"Chinese (Simplified)_China.936"找到合适的文本搜索配置
缺省的文本搜索配置将会被设置到"simple"

禁止为数据页生成校验和.

修复已存在目录 C:/PostgreSQL/pgsql/data 的权限 ... 成功
正在创建子目录 ... 成功
选择动态共享内存实现 ......windows
选择默认最大联接数 (max_connections) ... 100
选择默认共享缓冲区大小 (shared_buffers) ... 128MB
选择默认时区 ... Asia/Shanghai
创建配置文件 ... 成功
正在运行自举脚本 ...成功
正在执行自举后初始化 ...成功
同步数据到磁盘...成功

initdb: 警告: 为本地连接启用"trust"身份验证
你可以通过编辑 pg_hba.conf 更改或你下次
执行 initdb 时使用 -A或者--auth-local和--auth-host选项.

成功。您现在可以用下面的命令开启数据库服务器:

    ^"C^:^\PostgreSQL^\pgsql^\bin^\pg^_ctl^" -D ^"C^:^\PostgreSQL^\pgsql^\data^" -l 日志文件 start

由中文语言导致尝试采用GBK作为字符编码。因此最好直接指定UTF8

命令:initdb -E=UTF8 -D C:\PostgreSQL\pgsql\data【推荐此命令】

删除pgsql\data下的所有文件并重新执行。

4. 注册PostgreSQL服务

pg_ctl unregister -N <services_name>删除可能存在的windows服务注册

命令:pg_ctl unregister -N postgresql

> pg_ctl unregister -N postgresql
pg_ctl: 服务 "postgresql" 没有注册

删除之前曾经安装的服务pg_ctl unregister -N postgresql-x64-12

可以看到windows服务中,该服务已经没有

pg_ctl register -D <data_path>注册Windows服务(新增一个服务)

命令:pg_ctl register -D "C:\PostgreSQL\pgsql\data" 将会添加一个名为PostgreSQL(默认名称)的服务

命令:pg_ctl register -N "PostgreSQL-x64-14" -D "C:\PostgreSQL\pgsql\data" 通过-N指定服务名

如下,注册的两个服务:

注册的服务启动方式为“自动”。

net start <services_name>启动pgsql服务

也可以直接去windows服务里面找到注册的服务(如上图),右键手动启动

net start PostgreSQL-x64-14

> net start PostgreSQL-x64-14
PostgreSQL-x64-14 服务正在启动 .
PostgreSQL-x64-14 服务已经启动成功。

net stop <services_name>关闭pgsql服务

net stop PostgreSQL-x64-14

5. 创建默认的超级用户postgres

  • 创建并指定密码

通常,PostgreSQL的超级用户为postgres,二进制包安装时需要通过命令创建此用户。

[推荐下面指定密码] 命令:createuser --superuser postgrescreateuser -s postgres 将创建无密码的(超级)用户。显然必须指定密码

命令:createuser -s -P postgrescreateuser -s --pwprompt postgres

createuser [选项]... [用户名] 用户名放最后

输入命令回车后,输入密码

  • 使用postgres(超级)用户访问postgres数据库(默认安装的数据库)

命令:psql -U postgres -d postgres

6. 创建用户、数据库、切换数据库和用户

进行数据库、表、用户的初始化操作

直接使用PostgreSQL提供的命令(pgsql\bin)

  • 创建用户(非超级用户)、数据库:
PS C:\PostgreSQL\pgsql\bin> createuser -P myuser
为新角色输入的口令:
再输入一遍:
PS C:\PostgreSQL\pgsql\bin> createdb mydb -O=myuser
PS C:\PostgreSQL\pgsql\bin>
也可以使用 --owner指定新数据库的所属用户: createdb mydb --owner=myuser

psql登陆后,在psql内的操作

  • 创建用户、数据库:
postgres=# create user user123 with password '123456';
CREATE ROLE
postgres=# create database db123 owner user123;
CREATE DATABASE
postgres=#
  • 切换数据库\c [database_name];切换用户\c - [user_name]
postgres=# \c db123
您现在已经连接到数据库 "db123",用户 "postgres".
db123=# \c - user123
您现在已经连接到数据库 "db123",用户 "user123".
db123=>

dropuser <user_name>删除用户

dropuser postgres

使用pg_ctl启动或关闭PostgreSQL进程

pg_ctl start -w启动pgsql进程

命令:pg_ctl start -w -D "C:\PostgreSQL\pgsql\data"

pg_ctl stop -w停止pgsql进程

命令:pg_ctl stop -w -D "C:\PostgreSQL\pgsql\data"

使用pgAdmin4访问数据库

在解压后的pgsql/可以找到PostgreSQL的GUI管理工具pgAdmin 4文件夹

进入其bin目录,双击pgAdmin4.exe运行

设置或输入主密码并登陆

之后就是正常pgAdmin4的使用了,之前介绍过,不再赘述。

参考

PostgreSQL的windows环境下安装和常用操作命令

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
1月前
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
91 5
|
1月前
|
数据库
|
7月前
|
安全 关系型数据库 数据库
PostGreSQL安装压缩包格式
PostGreSQL安装压缩包格式
|
7月前
|
SQL 缓存 关系型数据库
postgresql的安装和使用
postgresql的安装和使用
164 0
|
4月前
|
SQL 关系型数据库 Linux
在CentOS 6上安装和使用PostgreSQL的方法
在CentOS 6上安装和使用PostgreSQL的方法
59 2
|
4月前
|
Ubuntu 关系型数据库 数据库
在Ubuntu 18.04上安装和使用PostgreSQL的方法
在Ubuntu 18.04上安装和使用PostgreSQL的方法
85 1
|
4月前
|
Ubuntu 关系型数据库 Linux
在Ubuntu 14.04上安装和使用PostgreSQL的方法
在Ubuntu 14.04上安装和使用PostgreSQL的方法
52 1
|
4月前
|
关系型数据库 Linux 数据库
在CentOS 7上安装和使用PostgreSQL的方法
在CentOS 7上安装和使用PostgreSQL的方法
415 0
|
4月前
|
SQL 关系型数据库 Linux
如何在 Debian 8 上安装和使用 PostgreSQL 9
如何在 Debian 8 上安装和使用 PostgreSQL 9
62 0
|
5月前
|
安全 关系型数据库 Linux