PostgreSQL的分发、安装和连接

kuhbmx9i  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(2)|浏览(114)

还没有找到答案,但如果这是一个重复,请相应地标记它!
尝试了解PostgreSQL如何通过静默安装分发给最终用户,以及在以下情况下的相应操作:

  1. 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的用户/程序设置。
    如何去做这件事?任何帮助都非常感谢!
wd2eg0qa

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
范例:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             127.0.0.1/32            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,否则template0template1是也可以使用的默认数据库。
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>

jecbmhm3

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的新超级用户。它会要求您设置密码。设置密码。记住它或记下它,以便以后注册服务器或创建数据库时使用。

相关问题