PostgreSQL предоставя всички привилегии на схемата на потребителя

Postgresql Predostava Vsicki Privilegii Na Shemata Na Potrebitela



Базите данни са от решаващо значение и работата на администратора е да контролира какви различни роли могат да изпълняват потребителите в дадена база данни. Като част от оторизацията администраторът може да дефинира потребителски обекти в базата данни и да предоставя или отменя различни привилегии на ролите.

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







Как да дадете привилегии на потребителите на PostgreSQL

Когато създавате нова роля, те получават някои привилегии по подразбиране. Въпреки това, повечето привилегии изискват администраторът да ги предостави на различни потребители, за да регулира достъпа и контрола на дадена схема. Можете да предоставите всички привилегии наведнъж или поотделно.



За този урок нека създадем нов роля на име linuxhint1 .



$ sudo -iu postgres
# създаване на роля linuxhint1 парола за влизане ‘linuxhint’;


Имайте предвид, че сме влезли като postgres, ролята по подразбиране, създадена след като инсталирате PostgreSQL.






Със създадената роля (потребител) можем да изброим наличните роли, като използваме следната команда:

# \ от


Наличните роли ще бъдат показани в табличен формат.




Postgres е ролята по подразбиране и повечето привилегии вече са предоставени. Новата роля обаче, linuxhint1, няма никакви привилегии, докато не му го предоставим.

1. Предоставяне на конкретна привилегия на потребител

Създадената роля не може да променя схемата, освен ако не разрешите. Нека проверим това, като първо създадем таблица като роля по подразбиране, postgres.

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



Можете да изброите наличните отношения, както е показано по-долу:


След това отворете нова обвивка и влезте в PostgreSQL, като използвате другата роля, linuxhint1, който създадохме по-рано с помощта на следната команда:

$ psql -IN linuxhint1 postgres



The уточнява, че ролята е да се използва базата данни на Postgres.

Опитайте се да прочетете съдържанието на таблицата, която създадохме с помощта на ИЗБЕРЕТЕ команда.

# ИЗБЕРЕТЕ * ОТ имена;


Връща a разрешението е отказано грешка, възпрепятстваща достъпа на потребителя до таблицата.


В такъв случай трябва да предоставим привилегии на ролята за избор/преглед на данни от дадената таблица, като използваме следния синтаксис:

# GRANT privilege_name ON table_name TO role_name;


За да предоставите привилегиите, използвайте сесията на Postgres.


След като бъде предоставено, опитайте да изпълните отново предишната команда.


Това е. Успяхте да предоставите привилегията за избор на конкретния потребител.

2. Предоставяне на всички привилегии на схемата на потребител

Досега сме успели да дадем само една привилегия за схема на потребител. Е, това не е достатъчно. Потребителят не може да променя схемата, освен ако не му предоставите всички привилегии, като вмъкване и актуализиране.

Има различни начини за постигане на това. Първо, нека предостави на потребителя всички привилегии за дадена таблица използвайки следния синтаксис:

# GRANT ALL ON име_на_таблица НА име_на_роля;



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

Да се предостави всички привилегии на всички таблици в определена схема , използвайте следния синтаксис:

# GRANT ALL НА ВСИЧКИ ТАБЛИЦИ В SCHEMA schema_name TO role_name;



И накрая, можете предоставят специфични привилегии, като вмъкване или избиране на всички таблици в схемата на дадена роля .

# GRANT privilege_name НА ВСИЧКИ ТАБЛИЦИ В SCHEMA schema_name НА име_на_роля;



Ролята може да избира данни във всички таблици в указаната схема. Така определяте какви привилегии да предоставите в схемата на различни потребители.

Заключение

PostgreSQL е мощна СУБД. Той има различни функции, включително позволява на администратора да предоставя различни привилегии на потребителите. Предоставянето на всички привилегии на схемата на потребителите означава разрешаване на потребителя да променя и взаимодейства с всички таблици в определената схема. Видяхме как да приложим този и други начини за предоставяне на привилегии върху схемата на роли с помощта на оператора GRANT в PostgreSQL.