最近做的一些产品,需要内置postgre数据库,肯定是希望到时候一键启动,直接注册成服务,不需要用户再去安装,所以倒腾了半天,网上找了很多资料,但是感觉都不是很全面,现在记录一下。
initdb.exe -D ../data
5.启动pgsql,启动完以后不要关闭窗口
pg_ctl.exe start -D ..\data
6.现在这个时候还是不能登录的,重新打开一个窗口,进入bin目录,连接pgsql
psql postgres
其实这个就是使用默认的postgres用户来登录,登录成功以后就进入了postgre的操作界面。但是你使用一些连接工具,并不能连接上,我查了一些资料,说是没有创建postgres这个角色,需要创建一下,再打开一个dos窗口,输入:
createuser -s -r postgres
然后接下来你就可以连接了,localhost,5432,数据库是postgres,用户名是postgres,密码随便输入。
7.我们现在创建一个数据库,在上一步中(psql postgres)的操作界面中直接输入:
create database testdatabase;
8.现在数据库是没有密码的,现在给加个密码:
alter user postgres with password 'newpassword';
但是现在还没有生效,就算退出去重新进入,也不需要输入密码,因为采用的是信任模式。
9. 在data目录下,打开pg_hba.conf文件,修改如下位置:
10. 然后使用步骤5重新启动一下,然后使用连接工具的时候必须输入密码才行。这边也看到了好多网友进行密码重置的一些方案,把md5改回trust,然后修改密码,然后再改回md5就可以了。
1.还是在bin目录下进行dos窗口:
pg_ctl.exe register -N "pgsql" -D D:psql\data
千万注意这个-D目录,这个地方必须要写绝对路径,我之前写的相对路径,结果服务注册成功以后,一直起不来,最后通过网友写的查看windows的日志才发现了问题所在。
2.然后就可以启动服务了:
sc start pgsql;或者:net start pgsql;
假如启动失败了,我后续写一篇博文介绍一下如何查看windows日志,能够直接看到启动服务所报的错。
友情链接:https://blog.csdn.net/ywg_1994/article/details/82430943
内置数据库以及启动脚本的书写
开篇就提到了,我们是要内置数据库,所以初始化数据库,数据库的创建,表的创建,密码的设置,都完成了,现在要做的就是在产品启动的时候去注册pgsql的服务,然后启动就行。
产品目录比如是:bin\startup.bat,pgsql的安装目录postgre和bin是同级的,我在这个启动脚本里面要去写注册服务的脚本。
脚本里面这样写:
cd ..
set pgsql_home=%cd%\postgre
cd %pgsql_home%\bin
pg_ctl.exe register -N "pgsql" -D %pgsql_home%\data
net start pgsql
这样写的话,每次都会注册服务并且去启动,会打出比如:服务已经注册,服务已经启动之类的话,虽然没有什么影响,但是做一些判断的话,应该只需要注册一次并启动一次就行。现在还没有做,等以后有需求的话再说。
需要修改data目录下的两个配置文件:
pg_hba.conf和postgresql.conf
查找IPv4 local connections
修改默认的
host all all 127.0.0.1/32 trust
重点修改一下ADDRESS属性。
为
host all all 192.168.1.1/32 trust #IP全匹配
或
host all all 192.168.1.1/24 trust #IP匹配前三段
或
host all all 0.0.0.0/0 trust #全部允许
查找 Connection Settings
修改默认的
listen_addresses = 'localhost'
上述配置,默认是注释掉的。
为
listen_addresses = '*'
然后重启一下pgsql,即可。