尝试在 Windows 10 上安装 Posgtgres13

目的 – one option

尝试在 Windows 10 上安装 Posgtgres13

文件下载

从PostgreSQL Database Download下载
13.1版本的Windows x86-64
在开始安装之前,先阅读地区设置(国际化和本地化),是否确认使用–locale=C呢?预先确认是个好主意吗?
※只是这是10年前的文章,Ubuntu默认安装时会使用–locale=ja_JP.UTF-8
虽然操作系统不同,但可以参考以下内容。调查PostgreSQL中的地区设置影响
默认密码加密方式变成了scram-sha-256
※A5M2已经做了相应的调整 > PostgreSQL scram-sha-256的支持
※在使用php时出现Error:SQLSTATE[08006] [7] SCRAM authentication requires libpq version 10 or above的情况下,请检查是否将php8\libpq.dll复制到c:\Windows下
关于在Windows环境下无法识别php-pgsql.dll的问题

安装

※以下是基本安装步骤:
1. 下载并安装postgresql-13.1-1-windows-x64.exe(双击安装程序)
2. 安装目录:C:\Program Files\PostgreSQL\13
3. 选择组件:保持默认即可
4. 数据目录:C:\Program Files\PostgreSQL\13\data
5. 密码:随意设置
6. 端口:5432
7. 语言环境:C
8. 确认预安装摘要
9. 开始安装
10. 安装完成后,将C:\Program Files\PostgreSQL\13\bin添加到环境变量的路径中。


PS > psql -lU postgres
ユーザ postgres のパスワード:
                                        データベース一覧
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |     アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
 postgres  | postgres | UTF8             | C        | C                 |
 template0 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
(3 行)

看到 psql -l 的结果,我觉得可能是使用 initdb –locale=C –encoding=UTF-8 创建的。

修改配置文件

参考ページ:《如何从远程主机安全连接到 PostgreSQL》

可以参考《如何从远程主机安全连接到 PostgreSQL》这个页面来实现从远程主机安全地连接到 PostgreSQL。


C:\Program Files\PostgreSQL\13\data\postgresql.conf はデフォルトのまま
listen_addresses = '*'
#authentication_timeout = 1min		# 1s-600s
password_encryption = scram-sha-256		# md5 or scram-sha-256

C:\Program Files\PostgreSQL\13\data\pg_hba.conf を以下に修正
# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             192.168.5.0/24          scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     scram-sha-256
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

修正完之後重新啟動

创建一个样本数据库

从PostgreSQL样本数据库中
下载PostgreSQL DVD租赁样本数据库后,解压dvdrental.zip文件。


PS > createdb --locale=C --encoding=UTF-8 --template=template0 -U postgres dvdrental
パスワード:
PS > psql -lU postgres
ユーザ postgres のパスワード:
                                        データベース一覧
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |     アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
 dvdrental | postgres | UTF8             | C        | C                 |
 postgres  | postgres | UTF8             | C        | C                 |
 template0 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
(4 行)

PS > pg_restore -U postgres -d dvdrental dvdrental.tar
パスワード:

米 psql (14.1) で以下の様になるが、データは作成されている(ようだ)
 13以下で試した時は出ていなかった気が・・・
PS C:> pg_restore -U postgres -d dvdrental dvdrental.tar
パスワード:
pg_restore: TOC処理中:
pg_restore: TOCエントリ6; 2615 2200 SCHEMA public postgres から
pg_restore: エラー: could not execute query: ERROR:  schema "public" already exists
コマンド: CREATE SCHEMA public;
米

PS > psql -U postgres
ユーザ postgres のパスワード:
psql (13.1)
"help"でヘルプを表示します。

postgres=# \c dvdrental
データベース"dvdrental"にユーザ"postgres"として接続しました。
dvdrental=# \d
                       リレーション一覧
 スキーマ |            名前            |     型     |  所有者
----------+----------------------------+------------+----------
 public   | actor                      | テーブル   | postgres
 public   | actor_actor_id_seq         | シーケンス | postgres
 public   | actor_info                 | ビュー     | postgres
 public   | address                    | テーブル   | postgres
 public   | address_address_id_seq     | シーケンス | postgres
 public   | category                   | テーブル   | postgres
~
dvdrental=# \q
PS >

设置访问环境


PS > psql -U postgres
ユーザ postgres のパスワード
psql (13.1)
"help"でヘルプを表示します。

postgres=# create role dvdrental with login password 'passwd';
CREATE ROLE
postgres=# \c dvdrental
データベース"dvdrental"にユーザ"postgres"として接続しました。

postgres=# grant all on all tables in schema public to dvdrental;
GRANT
postgres=# grant all on all sequences in schema public to dvdrental;
GRANT
postgres=# grant all on all functions in schema public to dvdrental;
GRANT

安装psycopg2


PS > python -V
Python 3.9.0

PS > pip3 install psycopg2

试试从Python3进行访问

# Windows Add env PYTHONIOENCODING = UTF-8 & restart vscode
# coding:utf-8

import psycopg2

server   = '192.168.5.xx' 
port= '5432'
database = 'dvdrental' 
username = 'dvdrental' 
password = 'demo'

# 接続文字列 - 空白文字がセパレータなのか??
constr = 'host=' + server + ' port=' + port + ' dbname=' + database + ' user=' + username + ' password=' + password
conn = psycopg2.connect(constr)

cur = conn.cursor()

# 件数を確認する
cur.execute("SELECT COUNT(*) FROM actor")
row = cur.fetchone()

if row:
    print(row)

cur.close()
conn.close()

以下是所参考的网站

– PostgreSQL 数据库下载
– 本地化和区域化设置(PostgreSQL)
– 调查 PostgreSQL 中本地化设置的影响
– PostgreSQL 的下载和安装
– PostgreSQL 示例数据库
– 在 Ubuntu 20.04 中安装 Posgtgres,并使用 C# + Npgsql 进行访问
– 从 Win10 + VsCode + Python3 + psycopg2 访问 Ubuntu 20.04 + Posgtgres12
– 安全地从远程主机连接到 PostgreSQL
– 在 Windows 10 上安装 Posgtgres12 试试看

广告
将在 10 秒后关闭
bannerAds