I followed the steps below.
- I installed PostgreSQL.
- I logged in as
postgres
via (sudo -i -u postgres
) - I created new user
new_user
via shell scriptcreateuser --interactive
- I granted that user permission to create databases.
- I created database:
createdb new_db
.
Now I want to give new_user
privileges be able to perform all default DML operations on tables created by himself (command bellow taken from this question), so I typed:
postgres=# ALTER DEFAULT PRIVILEGES FOR new_user IN SCHEMA
public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO new_user;
But got an error:
ERROR: syntax error at or near "new_user"
LINE 1: ALTER DEFAULT PRIVILEGES FOR new_user IN SCHEMA public GRANT...
I have no idea why this command is not working.
Best Answer
A key word is missing. It must be:
The documentation:
One of both (
{ ROLE | USER }
) is required.Note that the particular command does not make any sense to begin with because (per documentation):
If you want that to grant permissions for objects that a different user created, like
postgres
, then use:And you probably wouldn't want to restrict that to a particular schema.
And you typically want to grant privileges on sequences as well