使用 Postgres Shell 创建用户

Using Postgres Shell to createuser

我正在学习本书中的教程:

Mele, Antonio. Django 2 by Example: Build powerful and reliable Python web applications from scratch (Kindle Locations 1917-1918). Packt Publishing. Kindle Edition.

我在这部分:

  • Adding full-text search to your blog
    • Installing PostgreSQL

我在 Windows 10,我安装了 Postgres。说明说要输入 postgres shell:

su postgres
createuser -dP blog

我想我正在尝试创建一个名为 blog 的用户,该用户将拥有密码并被允许创建数据库?

当我这样做时,我得到:

Server [localhost]: su postgres
Database [postgres]: createuser -dP blog
Port [5432]:
Username [postgres]:
psql: warning: extra command-line argument "postgres" ignored
psql: warning: extra command-line argument "-d" ignored
psql: warning: extra command-line argument "createuser" ignored
psql: warning: extra command-line argument "-dP" ignored
psql: warning: extra command-line argument "blog" ignored
psql: warning: extra command-line argument "-p" ignored
psql: warning: extra command-line argument "5432" ignored
psql: could not translate host name "su" to address: Unknown host
Press any key to continue . . .

我不确定该做什么或到底发生了什么?指令很不清楚

您似乎在尝试使用 psql 中的命令,su postgrescreateuser -dP blog,这些命令适用于 bash,例如 shell。 su postgres表示切换postgres OS用户,createuser命令是shell创建数据库用户的命令。但是,如果您在 psql 中,则无法访问该命令。

当 psql 请求数据库连接信息时,您似乎也在输入这些命令,所以即使您向它发送 sql/psql 命令,它在那个时候也不起作用。

这里是createuser命令中的PostgreSQL Documentation。从系统 shell 使用此命令创建数据库用户。

这是 CREATE ROLE 上的 PostgreSQL Documentation。这就是从 psql 中创建用户的方式。

createuser 是从命令行给出的命令。因为你在 Windows 这意味着它是一个 .exe 文件,可能位于你安装 Postgres 的任何地方的 bin 目录中。在命令提示符或 powershell 提示符下使用 createuser -dP blog

此外,您可能必须向 createuser.exe 提供 -h localhost -p 5432 -U postgres -W password 以使其能够与服务器通信。

我在阅读 William S. Vincent 的 Django for Professionals 时就这样做了。

单击 PostgreSQL 的安装后,它会要求您输入密码。类型:postgres 完成安装数据库后,转到项目的settings.py,注释掉旧的:

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }

并粘贴文本:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

就是这样!我节省了你的时间!现在你欠我的!