Платформы корпоративных информационных систем


В колонках Host и User можно использовать символ «% », заменяющий произвольную последовательность символов. Например, имя узла «chem%lab» включает в себя «chembiolab», «chemtestlab» и т. д. Специальное имя пользователя «nobody» действует как одиночный «% », то есть охватывает всех пользователей, не упомянутых где-либо в другом месте. Ниже разъясняется смысл различных прав доступа:

Select_priv

Возможность выполнять команды SELECT.

Insert__priv

Возможность выполнять команды INSERT.

Update_priv

Возможность выполнять команды UPDATE.

Delete_priv

Возможность выполнять команды DELETE.

Createjyriv

Возможность выполнять команды CREATE или создавать базы данных.

Drop_priv

Возможность выполнять команды DROP для удаления баз данных.

Reload_priv

Возможность перезагружать информацию о доступе с помощью mysqladmin reload.

Shutdown_priv

Возможность останавливать сервер через mysqladmin shutdown.

Process_priv

Возможность управлять процессами сервера.

File_priv

Возможность читать и записывать файлы с помощью команд типа SELECT INTO OUTFILE и LOAD DATA INFILE.

Grant_priv

Возможность давать привилегии другим пользователям.

Index_priv

Возможность создавать и уничтожать индексы.

Alter_priv

Возможность выполнять команду ALTER TABLE.

В MySQL есть специальная функция, позволяющая скрыть пароли от любопытных глаз. Функция password() зашифровывает пароль. Ниже показано, как использовать функцию password() в процессе добавления пользователей в систему.

INSERT INTO user (Host, User, Password, Select_priv,

Insert_priv, Update_priv, Dclete_priv)

VALUES ('%', 'bob', password('mypass'), 'Y', 'Y', 'Y'.'Y')

INSERT INTO user (Host, User, Password, Select_priv)

VALUES ('athens.imaginary.com', 'jane', '', 'Y')

INSERT INTO user (Host, User, Password)

VALUES ('%', 'nobody', ")

INSERT INTO user (Host, User, Password, Select_pnv,

Insert_priv, Updatejriv, Delete_priv)

VALUES ('athens.imaginary.com', 'nobody',

password('thispass'), 'Y', 'Y', 'Y', 'Y')

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

Первый созданный нами пользователь, «bob», может подключаться к базе данных с любого компьютера и выполнять команды SELECT, INSERT, UPDATE и DELETE. Второй пользователь, «jane», может подключаться с «athens.imaginary.com», не имеет пароля и может выполнять только SELECT. Третий пользователь - «nobody» - с любой машины.'Этот пользователь вообще ничего не может делать. Последний пользователь -«nobody» - с машины «athens.imaginary.com», он может выполнять SELECT, INSERT, UPDATE и DELETE, как и пользователь «bob.»

Как MySQL производит сопоставление? Возможно, вы обратили внимание, что некоторое имя может соответствовать на деле нескольким записям. Например, «nobody@athens.imaginary.com» соответствует и «nobody@%», и «nobody@athens.imaginary.com». Прежде чем осуществлять поиск в таблице user, MySQL сортирует данные следующим образом:

  1. Сначала ищется соответствие для узлов, не содержащих масок « % », при этом пустое поле Host трактуется как «% ».
  2. Для одного и того же узла сначала проверяется соответствие имен, не содержащих масок. Пустое поле User трактуется как содержащее «%».
  3. Первое найденное соответствие считается окончательным.

В предыдущем примере пользователь сначала будет сравниваться с «nobody» из «athens.imagmary.com», поскольку «athens.imaginary.com» в порядке сортировки стоит выше «% ». Поскольку имена компьютеров сортируются раньше имен пользователей, значения привилегий для компьютера, с которого вы подключаетесь, имеют приоритет перед любыми конкретными правами, которые у вас могут быть. Например, если таблица user содержит записи:

По умолчанию



по умолчанию



Password

char(16)





Select_priv

enum('N','Y')



N


Insert priv enum('N','Y')   N  

Update_priv

enum('N','Y')



N


Delete_priv

enum('N','Y')



N


Create_priv

enum('N','Y')



N


Drop priv

enum('N','Y')



N


Reload priv

enum('N','Y')



N


Shutdown_priv

enum('N','Y')



N


Process_priv

enum('N','Y')



N


File_priv

enum('N','Y')



N


Grant_priv

enum('N','Y')



N


References_priv

enum('N','Y')



N


Index_priv

enum('N','Y')



N


Alter_priv

enum('N','Y')



N


Host

User

%

athens .imaginary .com

jane

и jane подключается с «athens.imaginary.com», то MySQL будет использовать привилегии, данные «athens.imaginary.com».









Начало  Назад  Вперед


Книжный магазин