КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Привилегии в MySQLПри подключении к серверу MySQL пользователь указывает имя и пароль, а сервер проверяет, имеет ли клиент право получить доступ к серверу, и в случае успеха наделяет пользователя соответствующими привилегиями. Данные о привилегиях пользователей хранятся в системной базе mysql. Проверка пользователя осуществляется по трем полям таблицы user (host, user и password) базы mysql. Сервер устанавливает соединение только в том случае, если находит в таблице user запись, в которой имя пользователя и пароль совпадают с введенными значениями. Посмотреть, в каком виде хранятся пароли в таблице user можно при помощи следующих команд: mysql>USE mysql mysql>SELECT password FROM user;
Ознакомиться со всеми таблицами базы mysql можно подав команду mysql>show tables;
После установления соединения сервер начинает сеанс работы с пользователем. Для каждого поступающего запроса сервер проверяет, имеется ли у пользователя достаточно привилегий для выполнения запроса. Информация о привилегиях находится в таблицах — user, db, host, tables_priv или columns_priv. Список привилегий представлен ниже:
Сервер MySQL считывает содержимое этих таблиц во время запуска и в случаях, когда изменения в привилегиях вступают в силу. Привилегии SELECT, INSERT, UPDATE И DELETE позволяют выполнять операции над строками таблиц баз данных. Привилегия index обеспечивает создание или уничтожение индексов. Привилегия alter позволяет использовать команду alter table. Привилегии create и drop позволяют создавать новые или уничтожать существующие базы данных и таблицы. Привилегия GRANT gram позволяет вам предоставлять другим пользователям привилегии, которыми обладаете вы сами. Остальные привилегии используются для администрирования SQL – сервера.. Команда shutdown завершает работу сервера. При запуске сервера MySQL все сведения о привилегиях пользователей загружаются в память, и с этого момента привилегии вступают в силу. Команды grant и revoke позволяют системным администраторам создавать пользователей MySQL а также предоставлять права пользователям или лишать их прав на четырех уровнях. · Глобальный уровень. Глобальные привилегии применяются ко всем базам данных на указанном сервере. Эти привилегии хранятся в таблице mysql.user. · Уровень базы данных. Привилегии базы данных применяются ко всем таблицам указанной базы данных. Эти привилегии хранятся в таблицах mysql .db и mysql .host. · Уровень таблицы. Привилегии таблицы применяются ко всем столбцам указанной таблицы. · Уровень столбца. Привилегии столбца применяются к отдельным столбцам указанной таблицы. Эти привилегии хранятся в таблице mysql .columns_priv. Команда grant позволяет добавлять новых пользователей сервера: mysql> GRANT SELECT, INSERT ON taxi.* TO Mike@localhost IDENTIFIED BY 'secret';
Эта команда дает права insert и select на базу taxi (на все таблицы - это задается символом звездочки) пользователю Mike, который подключается локально (localhost), причем, при подключении к серверу пользователь должен указать пароль 'secret’. Пароль хранится на сервере в зашифрованном виде. mysql> GRANT ALL PRIVILEGES ON *.* TO Ann@"%" ->IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
Здесь Anna получает все права (all privileges) на все таблицы всех баз сервера (* . *), причем подключаться она может как локально, так и удаленно через сеть (это указано символом % после Anna@). Вдобавок Anna может передавать свои права другим пользователям (with grant option), т. е. сама может подавать команду grant и создавать новых пользователей системы. mysql> GRANT USAGE ON *.* TO dummy@localhost IDENTIFIED BY ‘password’; Пользователь dummy, созданный в этом примере, может подсоединяться Команда REVOKE позволяет администратору лишать пользователей прав: REVOKE SELECT (use_on) ON taxi.timetable FROM Mike @ localhost;
Пользователь Mike не может просматривать значения поля use_on в таблице timetable. Команда set может устанавливать различные опции, влияющие на работу mysql> SET PASSWORD FOR root@localhost=PASSWORD('new_password’) ; Пользователи могут работать и непосредственно с таблицами назначения привилегий: mysql> USE mysql; Mysql> UPDATE user SET Password=PASSWORD('new_password') -> WHERE user='root';
После этого следует подать команду, заставляющую сервер перечитать таблицы привилегий — тогда они вступят в силу: mysql> FLUSH PRIVILEGES;
Если пароль задается при помощи оператора grant. . .identified by, нет необходимости использовать функцию password (). Эта команда самостоятельно производит шифрацию пароля, поэтому пароль следует указывать в простом текстовом виде, например, таким образом:
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
Изменения, которые вносятся в таблицы назначения привилегий при помощи команд grant, revoke или set password, учитываются сервером сразу после выполнения этих инструкций.
|