Помощь в написании студенческих работ
Антистрессовый сервис

Управление доступом к базам MySQL

РефератПомощь в написанииУзнать стоимостьмоей работы

В приведенных ниже примерах демонстрируется, как использовать клиент mysql для задания новых пользователей. В примерах предполагается, что привилегии установлены в соответствии с принятыми по умолчанию значениями, описанными в предыдущем разделе. Это означает, что для внесения изменений на том же компьютере, где запущен mysqld, необходимо подсоединиться к серверу как пользователь MySQL root… Читать ещё >

Управление доступом к базам MySQL (реферат, курсовая, диплом, контрольная)

Добавление новых пользователей в MySQL

Пользователей можно добавлять двумя различными способами — при помощи команды GRANT или напрямую в таблицы назначения привилегий MySQL. Предпочтительнее использовать команду GRANT — этот способ проще и дает меньше ошибок.

Существует также большое количество программ (таких как phpmyadmin), которые служат для создания и администрирования пользователей.

В приведенных ниже примерах демонстрируется, как использовать клиент mysql для задания новых пользователей. В примерах предполагается, что привилегии установлены в соответствии с принятыми по умолчанию значениями, описанными в предыдущем разделе. Это означает, что для внесения изменений на том же компьютере, где запущен mysqld, необходимо подсоединиться к серверу как пользователь MySQL root, и у пользователя root должна быть привилегия INSERT для базы данных mysql, а также административная привилегия RELOAD. Кроме того, если был изменен пароль пользователя root, его необходимо указать здесь для команды mysql.

Новых пользователей можно добавлять, используя команду GRANT:

shell> mysql —user=root mysql

mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost

-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.* TO monty" %"

-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

mysql> GRANT RELOAD, PROCESS ON *.* TO admin@localhost;

mysql> GRANT USAGE ON *.* TO dummy@localhost;

Эти команды GRANT создают трех новых пользователей:

· monty.

Полноценный суперпользователь — он может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль some_pass. Обратите внимание на то, что мы должны применить операторы GRANT как для monty@localhost, так и для monty@" %". Если не добавить запись с localhost, запись анонимного пользователя для localhost, которая создается при помощи mysql_install_db, будет иметь преимущество при подсоединении с локального компьютера, так как в ней указано более определенное значение для поля Host, и она расположена раньше в таблице user.

· admin.

Пользователь, который может подсоединяться с localhost без пароля; ему назначены административные привилегии RELOAD и PROCESS. Эти привилегии позволяют пользователю запускать команды mysqladmin reload, mysqladmin refresh и mysqladmin flush-*, а также mysqladmin processlist. Ему не назначено никаких привилегий, относящихся к базам данных (их можно назначить позже, дополнительно применив оператор GRANT).

· dummy.

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

Можно напрямую добавить точно такую же информацию о пользователе при помощи оператора INSERT, а затем дать серверу команду перезагрузить таблицы назначения привилегий:

shell> mysql —user=root mysql

mysql> INSERT INTO user VALUES ('localhost','monty', PASSWORD ('some_pass'),

-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

mysql> INSERT INTO user VALUES (' %','monty', PASSWORD ('some_pass'),

-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

mysql> INSERT INTO user SET Host='localhost', User='admin',

-> Reload_priv='Y', Process_priv='Y';

mysql> INSERT INTO user (Host, User, Password)

-> VALUES ('localhost','dummy','');

mysql> FLUSH PRIVILEGES;

В зависимости от версии MySQL в примере, приведенном выше, может указываться различное количество значений 'Y' (в версиях до Version 3.22.11 было меньше столбцов привилегий). Для пользователя admin используется более удобочитаемый расширенный синтаксис команды INSERT, который доступен начиная с версии 3.22.11.

Обратите внимание: чтобы создать суперпользователя, необходимо создать запись таблицы user с полями привилегий, установленными в значение 'Y'. Нет необходимости задавать значения в записях таблиц db или host.

Столбцы привилегий в таблице user в последнем операторе INSERT (для пользователя dummy) не были заданы явно, поэтому данным столбцам был присвоено принятое по умолчанию значение 'N'. Точно так же действует команда GRANT USAGE.

В приведенном ниже примере добавляется пользователь custom, который может подсоединяться с компьютеров localhost, server. domain и whitehouse.gov. Он хочет получать доступ к базе данных bankaccount только с компьютера localhost, к базе данных expenses — только с whitehouse.gov, и к базе данных customer — со всех трех компьютеров, а также использовать пароль stupid при подсоединении со всех трех компьютеров.

Чтобы задать эти привилегии пользователя при помощи оператора GRANT, выполните следующие команды:

shell> mysql —user=root mysql

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP

  • -> ON bankaccount.*
  • -> TO custom@localhost
  • -> IDENTIFIED BY 'stupid';

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP

  • -> ON expenses.*
  • -> TO Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
  • -> IDENTIFIED BY 'stupid';

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP

  • -> ON customer.*
  • -> TO custom@' %'
  • -> IDENTIFIED BY 'stupid';

Привилегии для пользователя custom мы назначаем потому, что этот пользователь хочет получать доступ к MySQL как с локального компьютера через сокеты Unix, так и с удаленного компьютера whitehouse.gov через протокол TCP/IP.

Чтобы задать привилегии пользователя путем непосредственного внесения изменений в таблицы назначения привилегий, выполните следующие команды (обратите внимание на команду FLUSH PRIVILEGES в конце примера):

shell> mysql —user=root mysql

mysql> INSERT INTO user (Host, User, Password)

-> VALUES ('localhost','custom', PASSWORD ('stupid'));

mysql> INSERT INTO user (Host, User, Password)

-> VALUES ('server.domain','custom', PASSWORD ('stupid'));

mysql> INSERT INTO user (Host, User, Password)

-> VALUES ('whitehouse.gov','custom', PASSWORD ('stupid'));

mysql> INSERT INTO db

  • -> (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
  • -> Create_priv, Drop_priv)
  • -> VALUES
  • -> ('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');

mysql> INSERT INTO db

  • -> (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
  • -> Create_priv, Drop_priv)
  • -> VALUES
  • -> ('whitehouse.gov','expenses','custom','Y','Y','Y','Y','Y','Y');

mysql> INSERT INTO db

  • -> (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
  • -> Create_priv, Drop_priv)
  • -> VALUES (' %','customer','custom','Y','Y','Y','Y','Y','Y');

mysql> FLUSH PRIVILEGES;

Первые три оператора INSERT добавляют в таблицу user записи, которые позволят пользователю custom подключаться с различных компьютеров с указанным паролем, но не дают ему никаких привилегий (все привилегии установлены в принятое по умолчанию значение 'N'). Следующие три оператора INSERT добавляют записи в таблицу db, в которой назначаются привилегии для пользователя custom по отношению к базам данных bankaccount, expenses и customer, но только если доступ осуществляется с определенных компьютеров. Как обычно, после внесения изменений непосредственно в таблицы назначения привилегий серверу необходимо дать команду на перезагрузку этих таблиц (при помощи FLUSH PRIVILEGES), чтобы внесенные изменения вступили в силу.

Если необходимо предоставить определенному пользователю доступ с любого компьютера к определенному домену, можно воспользоваться оператором GRANT следующим образом:

mysql> GRANT…

  • -> ON *.*
  • -> TO myusername" %.mydomainname.com"
  • -> IDENTIFIED BY 'mypassword';

Чтобы сделать то же самое путем непосредственного внесения изменений в таблицы назначения привилегий, выполните следующие действия:

mysql> INSERT INTO user VALUES ('%.mydomainname.com', 'myusername',

-> PASSWORD ('mypassword'),…);

mysql> FLUSH PRIVILEGES;

Показать весь текст
Заполнить форму текущей работой