尝试在 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 试试看