还没有找到答案,但如果这是一个重复,请相应地标记它!
尝试了解PostgreSQL如何通过静默安装分发给最终用户,以及在以下情况下的相应操作:
- PostgreSQL已安装在计算机系统上
1.如何以超级用户身份连接到PostgreSQL(如果已经安装)
1.创建一个数据库(与#2相关,因为在最初安装PostgreSQL时我们不知道PostgreSQL用户的凭据)
对于#1,根据我的研究和理解,有两种方法:
1.确定是否安装了PostgreSQL-[version]服务(根据this QA)
1.确定HKEY_MACHINE\SOFTWARE\PostgreSQL\注册表是否存在,如果存在,则查看\Installations\和\Services\子目录下的版本和服务名称
然而,我更关心的是连接部分。如果我的应用程序(用C#编写)依赖于一个名为“MyProgram”的数据库,那么如何在PostgreSQL中创建一个数据库,以及使用什么凭据?
根据我的理解,方法是尝试以默认超级用户postgres登录到默认数据库Postgres,并从该连接创建一个新用户和数据库。然而,Postgres用户的密码由最初安装PostgreSQL的用户/程序设置。
如何去做这件事?任何帮助都非常感谢!
2条答案
按热度按时间wd2eg0qa1#
**重要提示:**这可能不是最道德/正确的方法,但它似乎可以完成工作。
经过无数个小时的挖掘,在Windows上使用注册表项似乎是最好的方法,可以确定您打算安装的PostgreSQL版本是否已经安装。
假设我使用管理权限在Windows系统上运行,理论上,我应该能够更改数据目录(即集群)中已经存在的pg_hba.conf文件的登录凭据要求,以允许自己创建所需的数据库和用户,然后将凭据要求设置恢复为原始设置。
所以,我得出的结论是:
1.确定PostgreSQL是否已经安装。查看
HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installation\[version]
注册表,其中[version]
的格式为postgresql-[32 or 64 bit]-[PostgreSQL version]
,例如postgresql-x64-12
。如果注册表存在,则Data Directory
值的数据应该存在.获取该数据,这就是群集所在的位置。步骤[2]和上面的显然是在PostgreSQL已经安装的情况下。
1.在步骤[1]中的
Data Directory
值提供的群集目录中复制pg_hba.conf
文件。这将是我们完成后恢复到的文件。保存文件到临时目录,如桌面。
1.在群集目录的
pg_hba.conf
文件中,将所有连接类型的方法更改为trust
范例:
字符串
1.使用以下命令重新启动Postgres的Windows服务:
pg_ctl.exe restart -D <cluster directory>
注意:
pg_ctl.exe
位于Postgres安装目录的\bin\文件夹下。示例:
C:\Program Files\PostgreSQL\12\bin\pg_ctl.exe restart -D "C:\Program Files\PostgreSQL\12\data\"
1.连接到集群并发出命令,使用以下命令创建一个超级用户角色以满足您的需求:
psql -h 127.0.0.1 -p 5432 -d postgres -c "CREATE ROLE <role name> LOGIN SUPERUSER PASSWORD '<password>';
在上面的命令中,我让集群在本地计算机(即localhost,IP地址127.0.0.1)上运行,端口号为5432(默认),连接到默认数据库
postgres
,并发出命令来创建一个角色,使用提供的任何角色名称代替<role name>
,使用SUPERUSER权限和密码代替<password>
。由于必须连接到数据库,所以我连接到默认的
postgres
,否则template0
和template1
是也可以使用的默认数据库。1.连接到集群并发出命令,使用以下命令创建所需的数据库:
psql -h 127.0.0.1 -p 5432 -d postgres -c "CREATE DATABASE <database name>;
1.将
pg_hba.conf
文件替换为原始文件1.使用以下命令重新启动Postgres的Windows服务:
pg_ctl.exe restart -D <cluster directory>
jecbmhm32#
要在Postgres中创建数据库,具有数据库创建权限的用户及其密码是必不可少的。为此目的创建超级用户是很好的。如果您不知道现有的超级用户密码,您可以使用
createuser
命令创建另一个超级用户(参考doc)。创建一个用户可能需要一些步骤,但如果你是一个新手,你应该考虑从计算机上卸载Postgres和pgAdmin(如果它在那里),并从官方网站重新安装它们:https://www.postgresql.org/download/。这一次不要忘记记下密码的地方,当安装向导要求你输入密码。
现在,如果重新安装不是一个选项,首先将bin文件夹从安装目录添加到环境变量
PATH
。例如,在Windows PC上,bin文件夹通常位于C:\Program Files\PostgreSQL\16\bin
中。然后,以管理员身份打开命令提示符并输入
psql --version
。如果PATH
设置正确,您可能会看到Postgres版本。最后,运行
createuser --host=localhost --port=5432 --superuser --password postgres1
创建一个名为postgres1
的新超级用户。它会要求您设置密码。设置密码。记住它或记下它,以便以后注册服务器或创建数据库时使用。