Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Администрирование баз данных /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Управление учетными записями пользователей MySQL - Программирование от RIN.RU
Управление учетными записями пользователей MySQL



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


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


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


В приведенных ниже примерах демонстрируется, как использовать клиент 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 custom@whitehouse.gov
-> 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;


Можно также воспользоваться программами xmysqladmin, mysql_webadmin и даже xmysql, чтобы вставить, обновить или изменить значения в таблицах назначения привилегий. Эти утилиты можно найти в каталоге Contrib
веб-сайта MySQL (http://www.mysql.com/Downloads/Contrib/).


<<<  НазадВперед  >>>
 1  2  3  4  5  6  7 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Конфигурирование MySQL

Общие проблемы безопасности и система привилегий доступа MySQL

Предотвращение катастроф и восстановление

Справочник по языку администрирования баз данных

Локализация MySQL и использование национальных алфавитов

Серверные сценарии и утилиты MySQL

Клиентские сценарии и утилиты MySQL

Файлы журналов MySQL

Репликация в MySQL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь