windows10下部署免安装版本 PostgreSQL
先安装 Visual C++ Redistributable for Visual Studio 2015, 有可能安装其他软件时已经安装
从 https://www.microsoft.com/zh-CN/download/details.aspx?id=48145下载安装: vc_redist.x64.exe
部署 PostgreSQL:
- 从https://www.enterprisedb.com/download-postgresql-binaries下载zip免安装版本: postgresql-12.4-1-windows-x64-binaries.zip
- 解压到指定目录,如:
C:\software\pgsql
- 创建数据目录,如:
D:\pgdata
- 初始化数据库
# 初始化数据库
C:\software\pgsql\bin\initdb -D D:\pgdata -U postgres -A password -E utf8 --locale=C -W
# 输入的密码: pgpwd
命令行参数意义:
-D data 指定初始化的数据库目录(此处为当前目录的data文件夹)
-U postgres 数据库超级用户名(此处为postgres,如果不设置,会用当前windows用户名为账号)
-A password 数据库使用密码授权
-E utf8 数据库编码格式
--locale=C 数据库簇使用的本地化语言
-W 命令行执行后 输入密码
其他参数的 initdb --help查看
启动脚本(d:\bat\pgstart.bat
):
@ECHO OFF
echo start pg ......
C:/software/pgsql/bin/pg_ctl -D "D:\pgdata" start
超级用户登录: C:\software\pgsql\bin\psql -U postgres
错误: ImportError: DLL load failed while importing _psycopg
conda uninstall psycopg2
conda install psycopg2-binary
# 如果找不到 psycopg2-binary, 添加 conda-forge
conda config --add channels conda-forge
conda config --set channel_priority strict
ubuntu下安装 PostgreSQL
参考:https://www.postgresql.org/download/linux/ubuntu/安装指定版本(目前是13,如果不指定版本会安装12):
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql
sudo apt-get install postgresql-doc postgresql-doc-14 isag
安装程序会为 PostgreSQL创建超级用户 postgres, 进入pg命令行的方式(退出 postgres用户用exit,退出 psql用 quit,修改密码):
~$ sudo su postgres
postgres@xxx:$ psql
psql (13.0 (Ubuntu 13.0-1.pgdg20.04+1))
输入 "help" 来获取帮助信息.
postgres=# \l
postgres=# ALTER USER postgres WITH PASSWORD 'pgpassword';
postgres=# quit
ubuntu下使用pgweb客户端
从Github下载最新 release版本, 假定放的位置: /home/username/pgweb_linux_amd64
, 启动:
/home/username/pgweb_linux_amd64 --host localhost --user postgres --pass pgpassword
访问: http://localhost:8081/
就可以管理 PostgreSQL 数据库了。
用 supervisor 运行 pgweb, 创建配置文件 sudo vi /etc/supervisor/conf.d/pgweb.conf
[program:pgweb]
command = /home/username/pgweb_linux_amd64 --host localhost --user postgres --pass pgpassword
directory = /home/username
autostart = true
startsecs = 20
autorestart = true
startretries = 3
user = username
environment = STNORESTART="1", HOME="/home/username"
运行:
添加:
sudo supervisorctl update
启动
supervisorctl start pgweb
重启
supervisorctl restart pgweb
停止
supervisorctl stop pgweb
扩展:pg_stat_statements
postgres=# CREATE EXTENSION pg_stat_statements;
postgres=# show config_file;
config_file
-----------------------------------------
/etc/postgresql/13/main/postgresql.conf
编辑文件 /etc/postgresql/13/main/postgresql.conf
shared_preload_libraries= 'pg_stat_statements' # 表示要在启动时导入pg_stat_statements 动态库。
pg_stat_statements.max= 10000 #pg_stat_statements中记录的最大的SQL条目数,默认为5000
pg_stat_statements.track= all #记录pg_stat_statements中的, 值为 top表示不监控嵌套的sql语句
pg_stat_statements.track_utility = true #对 INSERT/UPDATE/DELETE/SELECT 之外的sql动作也作监控。
pg_stat_statements.save = true # 当postgresql停止时,把信息存入磁盘文件以备下次启动时再使用。
重启postgresql:service postgresql restart
查询:
SELECT query, calls, total_exec_time, (total_exec_time/calls) as average ,rows,
100.0 * shared_blks_hit /nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY average DESC LIMIT 10;
windows10:错误1067,进程意外终止
删除服务 postgresql-x64-13, 以管理员身份运行:
Net Stop postgresql-x64-13
sc delete postgresql-x64-13
关闭windows的服务管理窗口,以管理员身份打开命令行重新安装服务:
pg_ctl register -N "PostgreSQL" -D "C:\PostgreSQL\13\data"