使用Postgres Shell创建用户

时间:2018-12-07 15:36:50

标签: django postgresql windows-10 psql

我正在看这本书的一个教程:

  

梅勒,安东尼奥 Django 2 by Example:从头开始构建功能强大且可靠的Python Web应用程序(Kindle位置1917-1918)。   Packt出版。 Kindle版。

我在这部分:

  
      
  • 向您的博客添加全文搜索      
        
    • 安装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 . . .

我不确定该怎么办或到底发生了什么?指令还不清楚

3 个答案:

答案 0 :(得分:2)

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

当psql询问数据库连接信息时,您似乎也在键入这些命令,因此,即使您发送的是sql / psql命令,在那一刻也不起作用。

这是createuser命令上的PostgreSQL Documentation。从系统外壳使用此命令来创建数据库用户。

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

答案 1 :(得分:1)

createuser是要从命令行给出的命令。由于您使用的是Windows,这意味着它是一个.exe文件,该文件可能位于安装Postgres的位置的bin目录中。在命令提示符或Powershell提示符下,使用createuser -dP blog

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

答案 2 :(得分:1)

我做的就像阅读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',
    }
}

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