Предоставить привилегии для конкретной базы данных в PostgreSQL

Я перехожу с MySQL на PostgreSQL и попал в стену с привилегиями пользователя. Я привык назначать пользователю все привилегии для всех таблиц базы данных с помощью следующей команды:

# MySQL
grant all privileges on mydatabase.* to 'myuser'@'localhost' identified by 'mypassword';

Мне кажется, что решение PostgreSQL 9.x включает в себя присвоение привилегий «схеме», но усилия, требуемые от меня, чтобы точно определить, какой SQL выдавать, оказываются чрезмерными. Я знаю, что еще несколько часов исследований дадут ответ, но я думаю, что каждый, кто переходит с MySQL на PostgreSQL, может получить выгоду от наличия хотя бы одной страницы в Интернете, которая предоставляет простой и полный рецепт. Это единственная команда, которую мне когда-либо приходилось выдавать пользователям. Я бы предпочел не вводить команду для каждой новой таблицы.

Я не знаю, какие сценарии нужно обрабатывать по-разному в PostgreSQL, поэтому я перечислю некоторые сценарии, с которыми мне обычно приходилось работать в прошлом. Предположим, что мы хотим изменить только привилегии для одной базы данных, которая уже была создана.

(1a) Не все таблицы еще созданы или (1b) таблицы уже созданы.

(2a) Пользователь еще не создан или (2b) пользователь уже создан.

(3a) Привилегии еще не были назначены пользователю, или (3b) привилегии были ранее назначены пользователю.

(4a) Пользователь должен только вставлять, обновлять, выбирать и удалять строки, или (4b) пользователь также должен иметь возможность создавать и удалять таблицы.

Я видел ответы, которые предоставляют все привилегии для всех баз данных, но это не то, что я хочу здесь. Пожалуйста, я ищу простой рецепт, хотя я тоже не возражаю против объяснения.

Я не хочу предоставлять права всем пользователям и всем базам данных, как это обычно делается, потому что такой подход ставит под угрозу все базы данных, когда скомпрометирован какой-либо один пользователь. Я размещаю несколько клиентов баз данных и назначаю каждому клиенту свой логин.

Похоже, мне тоже нужноUSAGE привилегия, чтобы получить растущие значенияserial столбец, но я должен предоставить это в какой-то последовательности. Моя проблема стала более сложной.

Ответы на вопрос(4)

Ваш ответ на вопрос