PostgreSQL предоставляет пользователю все права на схему

Postgresql Predostavlaet Pol Zovatelu Vse Prava Na Shemu



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

Таким образом, вы получаете контроль над тем, кто может получить доступ к базе данных и какие привилегии у них есть, если они могут получить доступ к базе данных. Например, вы можете отозвать модификацию базы данных или предоставить все права на схему пользователю или пользователям в данной таблице. В этом руководстве подробно описано, как использовать PostgreSQL для предоставления пользователю всех привилегий в схеме.







Как предоставить привилегии пользователям в PostgreSQL

Когда вы создаете новую роль, они по умолчанию получают некоторые привилегии. Однако большинство привилегий требуют, чтобы администратор предоставил их разным пользователям для регулирования доступа и управления схемой. Вы можете предоставить все привилегии сразу или по отдельности.



Для этого урока давайте создадим новый роль названный линуксхинт1 .



$ судо постгрес
# создаем роль linuxhint1 логин пароль ‘linuxhint’;


Обратите внимание, что мы вошли в систему как постгрес, роль по умолчанию, созданная после установки PostgreSQL.






Создав роль (пользователя), мы можем вывести список доступных ролей с помощью следующей команды:

# \ из


Доступные роли будут отображаться в виде таблицы.




Постгрес является ролью по умолчанию и имеет большинство уже предоставленных привилегий. Однако новая роль, линуксхинт1, не имеет привилегий, пока мы их не предоставим.

1. Предоставление определенной привилегии пользователю

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

# создавать имена таблиц ( m_id int генерируется всегда в качестве личность, имя вачар ( 100 ) не нуль, lname varchar ( 100 ) не нуль, возраст int ) ;



Вы можете перечислить доступные отношения, как показано ниже:


Затем откройте новую оболочку и войдите в PostgreSQL, используя другую роль, линуксхинт1, который мы создали ранее с помощью следующей команды:

$ psql линуксхинт1 постгрес



указывает, что роль должна использовать базу данных Postgres.

Попробуйте прочитать содержимое таблицы, которую мы создали с помощью ВЫБРАТЬ команда.

# ВЫБРАТЬ * ОТ имен;


Он возвращает в доступе отказано ошибка, препятствующая доступу пользователя к таблице.


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

# GRANT имя_привилегии ON имя_таблицы TO имя_роли;


Чтобы предоставить привилегии, используйте сеанс Postgres.


Получив разрешение, попробуйте повторно запустить предыдущую команду.


Вот и все. Вам удалось предоставить привилегию выбора конкретному пользователю.

2. Предоставление пользователю всех привилегий на схеме

Пока что нам удалось предоставить пользователю только одну привилегию на схему. Ну, этого недостаточно. Пользователь не может изменить схему, если вы не предоставите ему все привилегии, такие как вставка и обновление.

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

# GRANT ALL ON table_name TO role_name;



Пользователь может взаимодействовать с конкретной таблицей и изменять ее. Однако они не могут работать с другими таблицами в схеме.

К предоставить все привилегии для всех таблиц в определенной схеме , используйте следующий синтаксис:

# GRANT ALL ON ALL TABLES IN SCHEMA schema_name TO role_name;



Наконец, вы можете предоставлять определенные привилегии, такие как вставка или выбор всех таблиц в схеме для данной роли .

# ПРЕДОСТАВЛЯТЬ имя_привилегии НА ВСЕХ ТАБЛИЦАХ В СХЕМЕ имя_схемы ДО имя_роли;



Роль может выбирать данные во всех таблицах указанной схемы. Вот как вы определяете, какие привилегии предоставлять в схеме различным пользователям.

Вывод

PostgreSQL — мощная СУБД. Он имеет различные функции, в том числе позволяет администратору предоставлять пользователям различные привилегии. Предоставление пользователям всех привилегий в схеме означает разрешение пользователю изменять и взаимодействовать со всеми таблицами в указанной схеме. Мы видели, как применять этот и другие способы предоставления привилегий в схеме ролям с помощью инструкции GRANT в PostgreSQL.