Railsでデータベースを作成しようとしています。 postgresでは、開発およびテストデータベースが表示されますが、アクセス権エラーが発生しています。私はこのリンクをたどろうとしましたが、うまくいきませんでした。
エラー:PG::InsufficientPrivilege: ERROR: permission denied for relation schema_migrations : SELECT "schema_migrations".* FROM "schema_migrations"
レール:関係schema_migrationsのアクセス許可が拒否されました
default: &default
adapter: postgresql
encoding: unicode
pool: 5
Host: localhost
username: root
password:
development:
<<: *default
database: svp-chicago_development
Postgresにログインして、これらのコマンドを実行しました。
psql postgres
CREATE USER root
CREATE DATABASE svp-chicago_development
GRANT ALL PRIVILEGES ON DATABASE svp-chicago_development to root
ALTER DATABASE svp-chicago_development OWNER TO root
私がする時 \list
データベースがあります。
password
のuser
を作成できなかったと思います。次のようにパスワードを作成してください。
CREATE USER root WITH PASSWORD 'your_new_password';
CREATE DATABASE svp-chicago_development;
GRANT ALL PRIVILEGES ON DATABASE svp-chicago_development to root;
ALTER DATABASE svp-chicago_development OWNER TO root;
私は同じ問題を抱えていたので、ロールに「スーパーユーザー」を追加して解決しました。
最初に、ユーザーとその特権をリストします。上記のコマンドに従った場合、rootユーザーには「スーパーユーザー」属性がありません。
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
other | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
root | | {}
次に、ルートを「スーパーユーザー」にアップグレードします。
postgres=# ALTER USER root WITH SUPERUSER;
ALTER ROLE
繰り返しますが、ユーザーとその特権をリストします。これでルートには「スーパーユーザー」がいます。
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
other | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
root | Superuser | {}
それが役に立てば幸い。
他の誰かが同じ問題でここに来た場合に備えて、私は他の多くの解決策を試してみましたが、私にとって最も効果的なものは次のとおりでした: PostgreSQLのすべてのテーブルのOWNERを同時に変更
root
またはpostgres
)がSuperuser
特権を持っていたので、うまくいきました REASSIGN OWNEDsystem
オブジェクト