Литмир - Электронная Библиотека
Содержание  
A
A

□ Без параметров она отображает все имеющиеся базы данных.

□ С базой данных в качестве параметра она выводит таблицы этой базы данных.

□ С именами базы данных и таблицы утилита отображает перечень столбцов заданной таблицы.

□ Если заданы база данных, таблица и столбец, утилита выводит подробную информацию о заданном столбце.

Создание пользователей и наделение их правами доступа

В роли администратора MySQL вам чаще всего придется обслуживать пользователей: добавлять, и удалять пользователей СУРБД MySQL и управлять их полномочиями. Начиная с версии MySQL 3.22, правами доступа или полномочиями пользователей управляют в мониторе MySQL с помощью команд

grant
и
revoke
— задача, гораздо менее устрашающая, чем непосредственная корректировка таблиц прав доступа, которая требовалась в ранних версиях MySQL.

grant

Команда MySQL

grant
почти, хотя и не полностью, соответствует синтаксису стандарта SQL92. Далее приведен общий формат:

grant &lt;<i>привилегия</i>&gt; on &lt;<i>объект</i>&gt; to &lt;<i>пользователь</i>&gt; [identified by user-password] [with grant option];

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

Таблица 8.6

Значение Описание
alter
Изменять таблицы и индексы
create
Создавать базы данных и таблицы
delete
Удалять данные из базы данных.
drop
Удалять базы данных и таблицы
index
Управлять индексами
insert
Вставлять данные в базу данных
lock tables
Разрешает блокировать таблицы
select
Извлекать данные
update
Изменять данные
all
Все вышеперечисленные

У некоторых прав доступа есть дополнительные опции. Например,

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

Объект, которому вы предоставляете данные права, обозначается как

databasename.tablename

и в лучших традициях Linux

*
— ссылка на любое имя, поэтому
*.*
означает все объекты в каждой базе данных, a
foo.*
— все таблицы в базе данных
foo
.

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

В синтаксисе языка SQL специальный символ

%
— символ подстановки, во многом сходный, с символом
*
в среде командной оболочки. Вы можете формировать отдельные команды для каждого требуемого набора прав доступа, но если, например, вы хотите предоставить доступ пользователю rick с любого компьютера в домене wiley.com, пользователя rick можно описать как

rick@'%.wiley.com'

Символ подстановки

%
всегда следует заключать в кавычки для того, чтобы отделить его от остальных текстовых данных.

Вы также можете применять нотацию IP/Netmask (N.N.N.N/M.M.M.M), задающую сетевой адрес для управления доступом.

Также, как раньше вы использовали описание

rick@'192.163.0.0/255.255.255.0'
для предоставления пользователю rick доступа с любого сетевого компьютера, можно задать
rick@'192.168.0.1'
для ограничения доступа пользователя rick единственной рабочей станцией или ввести
rick@'192.0.0.0/255.0.0.0'
, расширив область действия прав до любой машины в сети 192 класса А.

В еще одном примере команда

mysql&gt; <b>GRANT ALL ON foo.* TO rick@'%' IDENTIFIED BY 'bar';</b>

создает пользователя rick с полным набором прав доступа к базе данных

foo
для подключения с любой машины с начальным паролем
bar
.

Если базы данных

foo
до сих пор не существует, у пользователя rick теперь появится право создать ее с помощью команды SQL
create database
.

Ключевые слова

IDENTIFIED BY
— не обязательная часть команды, но убедиться в том, что у всех пользователей во время их создания появляются пароли, совсем неплохо.

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

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

Обычно ключевые слова

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

revoke

Естественно, администратор не может только предоставлять права, но также и лишает прав. Делается это с помощью команды

revoke
.

revoke &lt;<i>привилегия</i>&gt; on &lt;о<i>бъект</i>&gt; from &lt;<i>пользователь</i>&gt;

и с применением почти такого же формата, как в команде

grant
. Например:

mysql&gt; <b>REVOKE INSERT ON foo.* FROM rick@'%';</b>

Но команда

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

142
{"b":"285844","o":1}