首先在PostgreSQL官网下载安装包下载。
首次安装的时候最好不要安装到默认目录,我安装到了C:\PostgreSQL目录下,选择语言locale的时候应该选择"C",否则有可能出现“The database cluster initialisation failed.”错误。如果都按上面说的做还出现这个错误,就先把PostgreSQL卸载,先把想要安装的目录,比如我的是C:\PostgreSQL的控制权限设置为所有用户都有修改、读取和执行权限,也就是完全控制(右击文件夹-属性-安全)。然后重新安装就不会出现上面的错误了。
安装好之后,将psql.exe所在的路径添加到Path环境变量里,就可以从命令行下通过psql命令启动PostgreSQL数据库了。但是我直接运行psql,按提示输入密码之后总是连不上数据库,总是提示我没有权限。在网上查到了原因:安装PostgreSQL的时候设置的密码是数据库默认用户的密码,默认用户是postgres,所以登陆PostgreSQL数据库的时候要指定用户。登陆时候需要指定的参数通过psql --help命令也可以看到,注意默认用户名是postgres。
-h, --host=主机名 数据库服务器主机或socket目录(默认:"本地接口")
-p, --port=端口 数据库服务器的端口(默认:"5432")
-U, --username=用户名 指定数据库用户名(默认:"Eagle")
-w, --no-password 永远不提示输入口令
-W, --password 强制口令提示 (自动)
这些参数的默认值,可以在C:\PostgreSQL\9.6\scripts下的runpsql.bat中看到,该文件内容如下:
@echo off
REM Copyright (c) 2012-2017, EnterpriseDB Corporation. All rights reserved
REM PostgreSQL server psql runner script for Windows
SET server=localhost
SET /P server="Server [%server%]: "
SET database=postgres
SET /P database="Database [%database%]: "
SET port=5432
SET /P port="Port [%port%]: "
SET username=postgres
SET /P username="Username [%username%]: "
for /f "delims=" %%a in ('chcp ^|find /c "932"') do @ SET CLIENTENCODING_JP=%%a
if "%CLIENTENCODING_JP%"=="1" SET PGCLIENTENCODING=SJIS
if "%CLIENTENCODING_JP%"=="1" SET /P PGCLIENTENCODING="Client Encoding [%PGCLIENTENCODING%]: "
REM Run psql
"C:\PostgreSQL\9.6\bin\psql.exe" -h %server% -U %username% -d %database% -p %port%
pause