当前位置:   article > 正文

Postgresql V10.5基于windows操作系统下的安装与配置_windows修复已存在目录的权限 ... initdb

windows修复已存在目录的权限 ... initdb

1.下载

访问官网地址:https://www.postgresql.org
点击download
在这里插入图片描述
选择对应的操作系统
作者这里需要下载windows操作系统版本的数据库。
在这里插入图片描述
点击download the installer
在这里插入图片描述
选择对应版本下载即可,笔者这里选择了最新版本。
在这里插入图片描述

2.windows操作系统PostgreSQL安装

下载完成后得到一个.exe可执行文件。
在这里插入图片描述
双击运行,欢迎页 点击next
在这里插入图片描述

选择安装目录后点击next
在这里插入图片描述
选择需要安装的组件,这里做一下简单的说明
1.PostgreSQL Server 数据库服务
2.pgAdmin 4 可视化管理工具
3.Stack Builder 堆栈生成器
4.Command Line Tools 命令行工具
默认全选,点击next,继续
在这里插入图片描述
选择数据库的数据存放的位置,默认会在你选择的安装目录下的data目录,选择后点击next
在这里插入图片描述
字面意思,这个是输入超级用户postgres的密码。需要重复输入以确认,输入完成后点击next
在这里插入图片描述
选择端口号,默认5432,确定端口号后点击next
在这里插入图片描述
选择语言环境,这里选择chinese simplified china,完成后点击next
在这里插入图片描述
再次确认你所选择的配置,告知这些配置将被用于安装,确认无误后点击next
在这里插入图片描述
准备安装,点击next
在这里插入图片描述
点击后开始安装
在这里插入图片描述
安装完成,点击finish。安装包安装完成
在这里插入图片描述
这里点击电脑左下角的按钮可以看到postgresql 的文件夹以及协同安装的一些组件
在这里插入图片描述

3.pgAdmin

安装完后,网上比较难找到对应的下一步教程,有的话也是直接上代码,一知半解。所以笔者打开上文中的 installation notes ,安装日志,进行查阅,上面除了一些必要的说明之外,还多次提到了我们的pgAdmin,PostgreSQL 告诉我们可以用该程序对数据库进行调试。
于是,打开pgAdmin,同样也是一个网页
在这里插入图片描述
首先让我们填写 pgAdmin 的主密码。填写完成点击ok
大致查看了一下,点击Add New Server的话出现如下视图,
在这里插入图片描述
这里应该是一个可视化管理工具。可以创建连接。笔者尝试连接了一个远程数据库。没有问题。
在这里插入图片描述

4.PostgreSQL服务的启动与配置

PostgreSQL安装后是没有启动的,需要手动开启或者主动将服务添加到在windows服务中。
相关的操作,笔者查阅了 postgreSQL的中文社区,找到 PostgreSQL的操作手册
在这里插入图片描述需要安装postgresql的小伙伴可以去查阅一下。
我们查看安装后的bin目录下,可以看到有很多exe文件在手册中都有说明作用。其他的可执行文件可以具体查阅有关postgresql的命令,也是有可以对照的说明的。
在这里插入图片描述

4.1 配置流程

先给出配置的整体流程,可以参考一下。

1.环境变量的配置:设置全局PGDATA,PGHOME
2.初始化一个PostgreSQL服务
3.服务的启动和关闭
4.将PostgreSQL服务注册成windows服务
5.远程连接的设置
6.用户权限和认证模式

下面我们开始启动本地的postgresql服务

4.2 pg_ctl介绍 — 初始化、启动、停止或控制一个PostgreSQL服务器

postgresql 提供了 pg_ctl 程序来帮助用户完成数据库服务器的初始化,启动和注册。可以说,我们安装一个postgreSQL大部分的工作都可以通过pg_ctl来完成。我们通过手册可以查看pg_ctl的命令大纲如下:
在这里插入图片描述
上述命令中的 -D 参数指定数据库配置文件的文件系统位置。如果忽略该选项,将使用环境变量PGDATA。

4.3 设置全局的PGDATA,PGHOME

在安装过程中我们可以配置全局的环境变量以方便我们的数据库服务的配置。
其中
PGDATA 代表了数据库配置文件的文件系统位置,也是我们的数据存储位置
PGHOME 代表了我们的postgresql安装目录下的bin目录。

打开系统的环境变量(ps:不会打开的自行百度)

  1. 环境变量中设置PGDATA为你想要的数据库所在路径
    在这里插入图片描述
  2. 环境变量中配置PGHOME为你postgresql安装目录下的bin目录。
    在这里插入图片描述
  3. 把pghome变量添加到系统变量path中,win10可以直接添加,win7等注意变量间的分号。
    在这里插入图片描述

4.4 命令级配置–通过pg_ctl 启动/停止/控制一个数据库服务

4.4.1 初始化数据库服务 init命令

在这里插入图片描述
使用 pg_ctl init[db] [-D datadir] [-s] [-o initdb-options] 命令来初始化数据库。
这里因为我们配置了PGDATA,所以 不需要制定 -D 参数

C:\Users\ytyj>pg_ctl init
  • 1

结果

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

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

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

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

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

    E:/PostgreSQLDB/bin/pg_ctl -D ^"E^:^\PostgreSQLDB^\data^" -l logfile start
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

上述初始化信息告诉我们一些信息:

  1. 属于此数据库系统的文件宿主为用户 “ytyj”,实际上我们初始化数据库服务的操作系统的用户将成为我们postgresql数据库服务的默认用户,也就是超级用户
  2. 警告:为本地连接启动了 “trust” 认证. 你可以通过编辑 pg_hba.conf 更改
    关于postgresql的认证方式,有关信息可以查阅 官方手册
4.4.2 数据库服务的启动和关闭 pg_ctl start / stop 命令

服务器初始化好了,我们先尝试启动数据库服务器
输入如下命令

C:\Users\ytyj>pg_ctl start
  • 1

结果

等待服务器进程启动 ....2019-09-02 22:01:31.133 HKT [5356] 日志:  正在监听IPv6地址"::1",端口 5432
2019-09-02 22:01:31.134 HKT [5356] 日志:  正在监听IPv4地址"127.0.0.1",端口 5432
2019-09-02 22:01:31.697 HKT [10784] 日志:  数据库上次关闭时间为 2019-09-02 21:57:56 HKT
2019-09-02 22:01:31.759 HKT [5356] 日志:  数据库系统准备接受连接
 完成
服务器进程已经启动
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

服务已经正常启动了。这里使用管理工具进行连接,成功连接。值得关注的是我们这里没有使用密码就可以实现登陆,且登陆的用户是当前系统的用户,也就是我们数据库的超级用户,且验证了采用信任认证模式的时候是不需要密码就可以进行登陆的。
在这里插入图片描述

也可以在命令行使用 psql [database] 命令进入数据库,下面命令中的 postgres代表要访问的数据库,postgres 也是postgresql默认的数据库。我们可以通过help命令来获取提示,也可以进行各种其他操作。例如 \l 查询所有的数据库。当然,使用通用的sql语句也就可以进行各种CURD操作。

C:\Users\ytyj>psql postgres
psql (11.5)
输入 "help" 来获取帮助信息.
postgres=# help
您正在使用psql, 这是一种用于访问PostgreSQL的命令行界面
键入: \copyright 显示发行条款
       \h 显示 SQL 命令的说明
       \? 显示 pgsql 命令的说明
       \g 或者以分号(;)结尾以执行查询
       \q 退出
postgres=# \l
                                                   数据库列表
   名称    | 拥有者 | 字元编码 |            校对规则            |             Ctype              |   存取权限
-----------+--------+----------+--------------------------------+--------------------------------+---------------
 postgres  | ytyj   | UTF8     | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 |
 template0 | ytyj   | UTF8     | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 | =c/ytyj      +
           |        |          |                                |                                | ytyj=CTc/ytyj
 template1 | ytyj   | UTF8     | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 | =c/ytyj      +
           |        |          |                                |                                | ytyj=CTc/ytyj
(3 行记录)


postgres=#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

我们再来试一下数据库服务的停止。
首先输入 \q 退出命令行。然后输入 命令 pg_ctl stop 停止服务,同样我们也不需要输入 -D 参数

postgres=# \q

C:\Users\ytyj>pg_ctl stop
2019-09-02 22:50:08.280 HKT [5356] 日志:  接收到快速 (fast) 停止请求
等待服务器进程关闭 ....2019-09-02 22:50:08.319 HKT [5356] 日志:  中断任何激活事务
2019-09-02 22:50:08.324 HKT [5356] 日志:  后台工作进程 "logical replication launcher" (PID 7064) 已退出, 退出代码 1
2019-09-02 22:50:08.327 HKT [7828] 日志:  正在关闭
2019-09-02 22:50:08.480 HKT [5356] 日志:  数据库系统已关闭
 完成
服务器进程已经关闭

C:\Users\ytyj>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

这样我们就完成了数据库服务的启动和关闭。

4.4.3 将PostgreSQL注册到windows服务中

注册windows服务主要是为了能够自动的在后台启动我们的postgreSQL服务。也方便使用services.msc直接进行启动和关闭。
pg_ctl 提供了 register 命令来帮助我们进行注册。

pg_ctl register -D datadir -N serviceName
主要参数有 -D 数据库目录 -N 服务名
命令如下:

C:\WINDOWS\system32>pg_ctl register -N pgsql

C:\WINDOWS\system32>
  • 1
  • 2
  • 3

如果提示无法打开服务管理器,就使用管理员模式打开cmd命令行
然后我们查看windows服务列表
在这里插入图片描述
在这里插入图片描述
可以看到服务已经成功注册到windows服务中了,点击启动
在这里插入图片描述
这样我们就成功的把postgresql服务注册成windows服务了。
如果需要解除该服务,可以通过如下命令进行解除:

pg_ctl unregister serviecename
  • 1

servicename 填写对应的服务命即可。笔者已经测试过,没有问题。这里就不贴演示图片了。

4.5 文件级配置 – 通过修改配置文件进行配置

4.5.1 用户权限及认证模式

上文中我们提到新初始化的数据库是不需要密码进行登陆的。这是因为postgreSQL在初始化后默认采用的是trust信任模式进行认证。

介绍认证模式及其区别
讲解如何修改认证模式–包括配置文件的参数描述
进行测试

4.5.2 开启远程连接

PostgreSql 默认监听 本地访问的 5432 端口,需要把监听IP改为你希望能访问postgresql的客户端IP段, 同时需要配置用户访问认证策略

  1. 找到配置文件 postgresql.conf 配置ip和端口监听
#监听所有IP段的访问
listen_addresses = "*" # what IP address(es) to listen on;
# 设置端口,如果不使用默认端口,修改这部分内容
# PORT=5432 # (change requires restart)
  • 1
  • 2
  • 3
  • 4
  1. 找到配置文件 pg_hba.conf 配置用户访问认证策略
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5



# 所有用户所有主机都可以通过密码访问,加密方式为MD5
host    all             all             0.0.0.0/0               md5



# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/547750
推荐阅读
相关标签
  

闽ICP备14008679号