PostgreSQL简介
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。 百度百科
准备资料
- Windows Server:Windows Server 2016
- PostgreSQL:postgresql-12.1-1-windows-x64-binaries.zip (https://www.postgresql.org/)
安装PostgreSQL
- 将下载后的压缩包解压,如:
D:\ProductionEnv\pgsql
,并将PostgreSQL安装目录添加到环境变量:D:\ProductionEnv\pgsql\bin
。 - 进入解压后的目录,创建名为“data”的文件夹,用于实例创建,存储库文件和配置。
- 进入pgsql/bin下,命令行执行:
initdb -D ../data -U postgres
,在data目录下初始化一个实例,使用的用户名为“postgres”,这里并没有设置密码。 - 初始化后,data目录结构为:
- i. logfile.log是启动时指定的日志文件,用于存储日志,默认不存在。
- ii. postgresql.conf为当前实例的配置文件,如端口(默认为:5432),最大连接数等参数。
- iii. pg_hba.conf 为当前实例的访问规则。
- 启动/停止PostgreSQL,使用指令启动停止,但需要注意使用管理员权限运行。
- a. 启动:
pg_ctl -D D:\ProductionEnv\pgsql\data -l D:\ProductionEnv\pgsql\data\logfile.log start
- b. 停止:
pg_ctl -D D:\ProductionEnv\pgsql\data stop
- a. 启动:
创建bat脚本执行启动
创建如下脚本,可获取管理员权限,并执行启动指令。
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
set "POSTGRESSQL_HOME=D:\ProductionEnv\pgsql"
set PATH=%PATH%;"%POSTGRESSQL_HOME%\bin"
start %POSTGRESSQL_HOME%\bin\pg_ctl -D D:\ProductionEnv\pgsql\data -l D:\ProductionEnv\pgsql\data\logfile.log start
修改PostgreSQL密码
- 上述安装之后,指定了账号
postgres
,并未指定密码,所以需要使用指令修改密码。 - 登录
postgresql:psql -U postgres
- 修改密码:
ALTER USER postgres WITH PASSWORD 'new password';
- 提示“ALTER ROLE”表示修改成功。
配置远程访问
- 编辑配置文件
postgresql.conf
,参数listen_addresses
表示监听地址,默认为localhost
,表示指监听本地访问,需修改为listen_addresses= '*'
。 - 编辑配置文件
pg_hba.conf
:,添加对其他地址的信任:host all all 0.0.0.0/0 trust
。
禁止无密码登录
- 默认登录不需要使用密码登录,需要编辑配置文件
pg_hba.conf
禁止无密码登录。 - 针对不同的访问条目,修改
METHOD
值,由trust
修改为password
基本使用
- 使用psql指令登录客户端,登录后命令行模式为“postgres=#”,该模式下可以执行sql。
- 登录客户端(不指定IP地址、端口):
psql -U postgres
- 登录客户端(指定IP地址、端口):
psql -h localhost -p 5432 -U postgres -W postgres
,其中:-h表示ip地址,-p表示端口,-U表示用户,-W表示数据库名 - 执行查询,如查询所有数据库:
select * from pg_database;
- 退出访问:
\q