字符 14 处公共模式的权限被拒绝

Fil*_*Fil 9 postgresql laravel-9

我正在使用 postgresql 15

我尝试运行这些

grant all privileges on database my_database to my_database_user;
grant all privileges on all tables in schema public to my_database_user;
grant all privileges on all sequences in schema public to my_database_user;
grant all privileges on all functions in schema public to my_database_user;
Run Code Online (Sandbox Code Playgroud)

但当我跑步时

php artisan 迁移 --seed

我有

SQLSTATE[42501]:权限不足:7 错误:字符 14 处的架构公共权限被拒绝(SQL:创建表“迁移”(“id”序列主键不为空,“迁移”varchar(255)不为空,“批处理”)整数不为空))

我缺少什么?

我确实确保 .env 具有正确的凭据

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=my_database
DB_USERNAME=my_database_user
DB_PASSWORD=password
Run Code Online (Sandbox Code Playgroud)

检查我是否做到了

postgres=# \du my_database_user
            List of roles
  Role name  | Attributes | Member of 
-------------+------------+-----------
 my_database_user |            | {}
Run Code Online (Sandbox Code Playgroud)

postgres=# SELECT * FROM pg_roles;
          rolname          | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcanlogin | rolreplication | rolconnlimit | rolpassword | rolvaliduntil | rolbypassrls | rolconfig |  oid  
---------------------------+----------+------------+---------------+-------------+-------------+----------------+--------------+-------------+---------------+--------------+-----------+-------
 my_database_user               | f        | t          | f             | f           | t           | f              |           -1 | ********    |               | f            |           | 16389
Run Code Online (Sandbox Code Playgroud)

Lau*_*lbe 21

您缺少架构的权限:

GRANT CREATE ON SCHEMA public TO my_database_user;
Run Code Online (Sandbox Code Playgroud)

您可能使用 PostgreSQL v15 或更高版本。v15 中模式的默认权限public已更改。之前,不安全的默认设置是允许所有人(PUBLIC)在模式中创建对象public。现在只有数据库所有者可以执行此操作,除非您授予额外的权限。