1. ホーム
  2. postgresql

[解決済み] Postgresのロール "root "が存在しない。Herokuからpg:pullでデータベースを引き出そうとした場合

2022-03-09 13:25:34

質問

私はPostgresとHerokuの初心者です。Herokuからデータベースを引き出そうとしているのですが、何か簡単なことを見逃しています。私はしました。

heroku pg:pull HEROKU_POSTGRESQL_IVORY_URL localdb

そして、エラーが出ました。

createdb: database creation failed: ERROR:  permission denied to create database

そして、同じように "sudo" で試してみたところ、こうなりました。

createdb: could not connect to database template1: FATAL:  role "root" does not exist

つまり、私が見つけられない簡単なコマンドを見逃しているに違いないのです。私はLinuxを使用しており、Postgresをインストールし、動作しています。

解決方法は?

createdb は、SQL 文のラッパーです。 CREATE DATABASE そのため、データベースへの接続が必要です。

デフォルトでは、すべてのPostgresコマンドラインツールは、現在のオペレーティングシステムのユーザーを使用してデータベースに接続しようとします。エラーメッセージが示しているように、このツールには root をデータベースから削除してください。そのため、Postgresのスーパーユーザの名前を渡して createdb が接続できるようになります。このユーザーの名前は通常 postgres .

もう一つの方法は、Linuxユーザーを postgres が存在する場合。

Herokuを知らないし、どうやって始めたのかわからないけど createdb が、ユーザー名を渡すためのパラメータは -U (すべてのPostgresコマンドライン・プログラムにおいて)。そのため、以下のようになります。

 createdb -U postgres name_of_new_database