Postgres createdb 和 create database 在 Ubuntu 18.04 中不起作用

Posted

技术标签:

【中文标题】Postgres createdb 和 create database 在 Ubuntu 18.04 中不起作用【英文标题】:Postgres createdb and create database is not working in Ubuntu 18.04 【发布时间】:2022-01-06 21:17:33 【问题描述】:

我有一个 Django 项目,我正在尝试在 Ubuntu 上设置并在 PostgreSQL 14 中创建一个新数据库。

默认的root用户和往常一样是Postgres。

然后我尝试使用我的 Linux 用户名“abc”创建一个具有所有权限的新用户:“SUPERUSER”、“CREATEDB”等。一切正常并创建了一个新用户。

有人建议我创建一个同名“abc”的数据库。

所以,我在 psql shell 中做了 CREATE DATABASE abc;,它没有给出任何错误,也没有任何结果。

我在 bash 终端中尝试了 createdb abccreatdb,但这也没有任何作用。

这个 SO 答案 link 的解决方案对我根本不起作用。

我也试过this,但没有做任何事情。

我最终只是希望能够为我的 Django 项目创建数据库,但我无法做到,而且我现在不知道自己做错了什么。

这是我用来设置 Django 项目数据库的命令:

# create new user who will be the db owner
# on Ubuntu, root user is postgres
createuser -P <new_user_name> -U <root_user>

# if you're having issues logging in
# see https://***.com/a/18664239/3187043

# create new db with the above created user as its owner
createdb -E UTF8 --lc-collate=en_IN.UTF-8 --lc-ctype=en_IN.UTF-8 -T template0 -O <new_user_name> -U <root_user> <new_db_name>
# this doesn't get created

# copy the contents to your new db
psql -U <new_user_name> <new_db_name> < ~/Downloads/backup-ocrdb-2018-09-13_1214.psql
#fails with no output

# Log in to psql console using
psql -U <new_user_name> <new_db_name>
#unable to login because db has not been created

正如@Laurenz Albe 所建议的

这是运行的输出:SELECT * FROM pg_locks;

【问题讨论】:

一定是错字。 我已经做了很多时间了,我不认为这是由于错字。 可能是 Windows 的问题,因为我是在 WSL2 中做的。 如果它挂起并且没有完成,这听起来像一个锁。查看 PostgreSQL 日志以获取有趣的消息。当CREATE DATABASE 挂起时,在第二个数据库会话中运行SELECT * FROM pg_locks; 并将结果添加到问题中。 你试过我推荐的吗? 【参考方案1】:

转到 linux 命令提示符并输入:

$su - postgres

然后请输入用户名以查看进度:

然后输入密码:

psql 然后会显示progressql命令提示符:

postgres = #

要查看所有创建的数据库,请使用此命令,它将显示所有数据库:

postgres = # \l

要创建新数据库,请使用以下命令:

postgres = # 创建数据库数据库名称;

要连接到特定的数据库,请使用以下命令:

postgres = # \c 数据库名称;

要将此连接的数据库的权限授予特定用户,请使用以下命令:

postgres = # 将 DATABASE dbname 的权限授予用户名;

【讨论】:

我认为你没有理解我的问题。

以上是关于Postgres createdb 和 create database 在 Ubuntu 18.04 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL继承postgres的权限[重复]

如何在引导程序中获取 grails 数据源 createdb 属性

Postgres:除 phpPgAdmin 之外的所有权限都被拒绝

第一次如何配置postgresql?

无法混合ecto.create,角色'postgres'不存在[重复]

Django Postgres objects.create ValidationError