Postgres的.角色"根"不存在.当试图pg:从Heroku拉数据库

Ale*_*lla 15 postgresql heroku

我是Postgres和Heroku的新手.我试图从Heroku中提取数据库,但我遗漏了一些简单的东西.我做了:

heroku pg:pull HEROKU_POSTGRESQL_IVORY_URL localdb
Run Code Online (Sandbox Code Playgroud)

我收到了错误:

createdb: database creation failed: ERROR:  permission denied to create database
Run Code Online (Sandbox Code Playgroud)

然后我尝试了同样的"sudo".我得到了:

createdb: could not connect to database template1: FATAL:  role "root" does not exist
Run Code Online (Sandbox Code Playgroud)

所以,我必须缺少一些我找不到的简单命令.我在Linux上,我安装了Postgres并正在工作.

a_h*_*ame 28

createdb是SQL语句的包装器CREATE DATABASE,因此它需要连接到数据库.

默认情况下,所有Postgres命令行工具都尝试使用当前操作系统用户连接到数据库.由于错误消息表明root数据库中没有用户名.因此,您需要传递Postgres超级用户的名称createdb才能进行连接.该用户通常被命名postgres.

postgres如果存在这样的Linux用户,另一个选择是将Linux用户切换到.

我不知道Heroku,我不知道你是怎么开始的createdb,但传递用户名的参数是-U(对于所有Postgres命令行程序).所以你需要

 createdb -U postgres name_of_new_database
Run Code Online (Sandbox Code Playgroud)

  • 最后一个命令也给了我`createdb:无法连接到数据库template1:​​FATAL:Debian 8.7中用户"postgres"的对等身份验证失败.你可以做`sudo -u postgres psql`.您可以直接在`psql`:`CREATE DATABASE masi`中创建db.@YaroslavNikitenko (3认同)

Ezr*_*boi 15

尝试使用:

须藤 su - postgres

然后使用:

createdb name_of_db;