Аргерих Л. О языке РНР. Часть 5. Страница 76


Эта команда удаляет из таблицы прав доступа записи, относящиеся к тесто­вой базе данных. Теперь отменим удаленный доступ к серверу MySQL с по­мощью команды SQL:

mysql> DELETE FROM user WHERE host='%';

Теперь удалим записи пользователей без имени:

mysql> DELETE FROM user WHERE User=";

Обеспечим пароль для root. Пароль должен быть надежным - хорошо, если он состоит из буквенно-цифровых символов и знаков пунктуации:

mysql> UPDATE user SET Password = PASSW0RD("jgt4»92smck") WHERE User = 'root';

Наконец, требуется обеспечить перезагрузку MySQL таблиц с правами до­ступа, чтобы они вступили в силу. Это достигается следующей командой SQL:

mysql> FLUSH PRIVILEGES;

Управление пользователями MySQL

Убрав лишнее после установки и сделав ее более защищенной, следует поду­мать о том, какие права доступа действительно нужны пользователям. Чаще всего это доступ по чтению ко всей базе данных и право записи в одну-две таблицы. Назовем этого пользователя webuser. Возможно, имеется сценарий администрирования РНР, защищенный паролем, которому нужно право чтения и записи во все таблицы базы данных; назовем соответствующего пользователя

В данном примере предполагается наличие базы данных web site с тремя таблицами - users, news и log_tbl. В таблице users хранятся данные о пользо­вателях, зарегистрированных на веб-сайте. Таким образом, webuser должен обладать правами SELECT, INSERT и UPDATE в отношении этой таблицы. Таблица news хранит новые статьи. Новые статьи могут добавляться или изменяться только администратором, поэтому пользователю webuser нужен только до­ступ SELECT к этой таблице. Наконец, таблица log_tbl хранит сведения о каж­дом посещении сайта. Следовательно, оба пользователя должны иметь право выполнения SELECT и INSERT в этой таблице, но ни у одного из них не должно быть прав UPDATE или DELETE.

Посмотрим, как создать двух пользователей с перечисленными выше права­ми.

Сначала зарегистрируемся на сервере mysql:

mysql -uroot -p

Enter password: ******

Теперь надо создать двух пользователей, которым первоначально предоста­вим право применять SELECT ко всей базе данных веб-сайта:

mysql> GRANT SELECT ON web site.* TO webuser@localhost IDENTIFIED BY 1secure_password';

mysql> GRANT SELECT ON web site.* TO adminuser@localhost IDENTIFIED BY 'secure_password2';

Пользователю webuser необходимы также права на выполнение команд IN­SERT и UPDATE для таблицы users и команды INSERT для таблицы log_______________________________________________ tbl: