Программирование >>  Программный интерфейс приложений 

1 ... 155 156 157 [ 158 ] 159 160 161 ... 264


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

Некоторые привилегии (file, process, reload и shutdown) ЯВЛЯЮТСЯ административными и могут присваиваться только с помошью спецификатора глобальных привилегий on В случае необходимости их можно присваивать без предоставления привилегий на уровне базы данных. Так, например, приведенный ниже оператор создает пользователя flush, который обладает возможностью только выполнять операторы flush. Это может оказаться полезным в административных сценариях, когда необходимо выполнить обновление журналов:

GRANT RELOAD ON *.* ТО flushglocalhost IDENTIFIED BY flushpass

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

Привилегии уровня базы данных применяются ко всем таблицам определенной базы. Такие привилегии присваиваются с помошью предложения ON db пате:

GRANT ALL ON samp db.* TO bill@racer.snake.net IDENTIFIED BY rock GRANT SELECT ON menagerie.* TO ro user@% IDENTIFIED BY dirt

Первый из указанных операторов предоставляет пользователю bill все права для работы со всеми таблицами базы данных sampdb. Второй оператор создает пользователя rouser с ограниченными правами (только чтение), который может получать доступ к любой таблице базы данных menagerie, однако только для чтения. Другими словами, этот пользователь имеет возможность запускать только оператор select.

Как определить имя локального компьютера в таблице разрешений

Довольно часто пользователи не могут подключиться к серверу с основного компьютера (на котором инсталлирован сервер) из-за того, что вместо имени localhost указывают имя сервера. Эта проблема возникает по причине использования разных способов определения имен, записанных в таблицах разрешений и выдаваемых программам. Если процедура сервера выдает неполное имя, например, pit-viper, а в таблицах разрешений записано полное имя pit-viper.snake.net (или наоборот), подключение становится невозможным.

Чтобы определить, имеет ли место такая проблема на используемом компьютере, попытайтесь подключиться к локальному серверу с помощью опции -h, устанавливающей имя компьютера. Затем загляните в общий учетный файл сервера. Какое имя компьютера в нем записано, полное или неполное? Неважно, какая форма применяется. Важно использовать для определения имени компьютера в операторе grant именно это имя.

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



вующих таблиц, но запретить создавать новые таблицы или удалять уже существующие, это можно сделать следующим образом;

GRANT SELECT, INSERT, DELETE, UPDATE ON sampdb.* TO jennie(a% IDENTIFIED BY boron

Для еще более детального управления доступом можно предоставлягть привилегии отдельным таблицам или даже отдельным их столбцам. Привилегии столбцам оказываются особенно полезными, если определенную часть таблицы необходимо скрыть от пользователя, либо предоставить возможность изменения только заданных столбцов. Предположим, например, что какая-то фирма нанимает на определенный период времени сотрудника, который будет выполнять роль секретаря. Администратор рещает предоставить новому сотруднику права доступа только для чтения таблицы member, содержащей информацию о действующих членах общества, и привилегию UPDATE столбцу expiration (срок окончания членства) этой таблицы. При таком доступе новый секретарь вполне сможет изменять даты окончания членства организаций-участников, если они продолжают свое членство. Для создания такого пользователя MySQL можно использовать следующие операторы;

GRANT SELECT ON samp db.member

TO assistanteiocalhost IDENTIFIED BY officehelp GRANT UPDATE (expiration) ON 3amp db.member

TO assistanteiocalhost

Первый оператор предоставляет права на чтение всей таблицы member И определяет пароль. Второй оператор добавляет привилегию UPDATE, но только ДЛЯ столбца expiration. Поскольку пароль устанавливается первым оператором, во втором его определять повторно вовсе необязательно.

Если необходимо присвоить привилегии для работы с несколькими столбцами, их имена следует разделить запятыми. Так, например, чтобы добавить привилегии UPDATE для полей адресов таблицы member для пользователя assistant, используется приведенный ниже оператор. При его выполнении новые привилегии будут добавлены к уже существующим привилегиям пользователя;

GRANT UPDATE (street,city,state,zip) ON samp db.member TO assistant@localhost

Как правило, пользователю не предоставляются большие привилегии, чем это нужно для работы. Иногда, тем не менее, возникает необходимость в предоставлении пользователям возможности создавать таблицы, чтобы заносить в них промежуточные результаты. Желательно, чтобы эти таблицы создавались не в рабочей базе данных, поскольку пользователи могут случайно изменить ее содержимое. Эту задачу можно решить посредством создания отдельной базы данных (назовем ее tmp) и предоставлению пользователям всех возможных привштегий для работы с ней.



Чтобы разрешить всем пользователям домена mars.net использовать базу данных tmp, достаточно ввести следующий оператор GRANT:

GRANT ALL ON tmp.* TO @%.mars.net

После его выполнения пользователи смогут создавать и ссылаться на таблицы базы данных tmp с помощью имен типа tmp.tbl name. (Часть в спецификаторе создает запись для анонимного пользователя, что позволяет каждому использовать эти привилегии.)

Нужны ли пользователю административные привилегии

Администратор МОЖС! ИрСДОСТаВИГЬ ЛаДеЛЬЩ oajol да;т..1л uvJJivwA

ность управления доступом, предоставив ему все привилегии базы данных и определив опцию WITH GRANT option. Так, чтобы разрешить пользователю alicia подключаться с любого компьютера домена big-corp.com и предоставить ему административные привилегии для работы со всеми таблицами базы данных sales, необходимо использовать оператор GRANT следующего вида:

GRANT ALL ON sales.*

TO alicia@%.big-corp.corti IDENTIFIED BY applejuice WITH GRANT OPTION

Фактически, предложение with GRANT option позволяет администратору делегировать права разрешения доступа другому пользователю. Однако следует проявлять осторожность, поскольку два пользователя с привилегиями GRANT могут предоставлять другим пользователям свои права. Если предоставить одному пользователю только привилегию select, а второму, помимо select, привилегию GRANT, второй пользователь легко может сделать первого более сильным .

Отмена привилегий и удаление пользователей

Для отмены привилегий пользователя применяется оператор revoke. Его синтаксис очень похож на синтаксис оператора GRANT с той лишь разницей, что предложение то заменено на предложение from, а предложения identified by И with GRANT option ОТСутствуЮТ ВОВСе:

REVOKE privileges {columns) ON what FROM user

Часть user этого оператора должна соответствовать части user исходного оператора GRANT для пользователя, привилегии которого отменяются. Часть privileges необязательно должна соответствовать ранее определенным привилегиям. Пользуясь оператором revoke, можно отменить только некоторые из привилегий, предоставленные оператором GRANT.

Оператор revoke применяется для отмены привилегий, но не для удаления пользователей. В таблице user все равно остается запись для пользователя, даже если все привилегии для него сняты. Это означает, что



1 ... 155 156 157 [ 158 ] 159 160 161 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.004
При копировании материалов приветствуются ссылки.
Яндекс.Метрика