Денис Колисниченко - Linux-сервер своими руками
GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY 'password' WITH GRANT OPTION;
Введенный вами запрос создаст пользователя admin, который будет иметь право выполнять любые операции со всеми базами данных. Данный пользователь будет иметь право подключаться к серверу с компьютера localhost, используя пароль password.
Маска *.* определяет, к каким базам данных и таблицам имеет право подключаться тот или иной пользователь. Первая звездочка определяет базу, а вторая — таблицу. Если вам нужно, чтобы пользователь admin имел право подключаться с любого хоста, используйте знак процента вместо имени хоста. В этом случае запрос будет выглядеть так:
GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY 'password' WITH GRANT OPTION;
Вместо всех полномочий вы можете определить, какие действия может выполнять с базой тот или иной пользователь. Если вы являетесь хостинг-провайдером и предоставляете доступ пользователю к его базе данных, то можете использовать следующий запрос:
GRANT CREATE,DROP,SELECT,INSERT,UPDATE,DELETE,INDEX ON user.* TO [email protected]% IDENTIFIED BY 'user_password';
Перед выполнением данного запроса необходимо создать базу данных user. Данный запрос позволяет пользователю user выполнять все операции с его базой данных.
Полный список полномочий представлен в табл. 16.1. Если запрос GRANT у вас не работает, то вы можете внести пользователя непосредственно в таблицу user базы данных mysql. Структура таблицы user выглядит следующим образом:
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv
Поля Host, User, Password — это, соответственно, узел, из которого пользователь может получить доступ, имя пользователя, пароль пользователя.
Полномочия пользователей сервера MySQL Таблица 16.1
Полномочия Описание SELECT, INSERT, UPDATE, DELETE Одноименные операции с данными: пользователь имеет право просматривать, добавлять, модифицировать, удалять данные в таблицах баз данных INDEX Пользователь имеет право производить операции с индексами таблиц REFERENCES Пользователь имеет право работать со ссылками в базах данных и таблицах CREATE, DROP Создание и удаление таблиц и баз данных GRANT, ALTER Операции с полномочиями RELOAD, SHUTDOWN, PROCESS Пользователь имеет право перезагружать, останавливать сервер и просматривать все процессы (подключения)Все остальные поля задают полномочия для пользователя. Если выполнение какой-нибудь операции разрешено пользователю, соответствующее поле должно быть равным «Y». В противном случае установите значение «N».
Например, нам нужно создать пользователя admin, который должен иметь все полномочия. Это можно сделать с помощью такого запроса SQL:
INSERT INTO user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv) VALUES
('localhost', 'admin' ,password('4td561sl2'), 'Y', 'Y, 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
При вводе запроса обратите внимание на регистр названий полей. Сервер MySQL различает прописные и строчные буквы! С помощью вышеприведенного запроса был создан пользователь admin, который имеет право регистрироваться на сервере только из узла localhost. Если вам нужно разрешить регистрацию из любого узла сети, используйте знак процента, однако это не совсем корректно с точки зрения безопасности. Пользователь admin обладает всеми возможными привилегиями. Пароль пользователя — 4td561sl2.
Для создания обыкновенного пользователя используйте следующий запрос:
INSERT INTO
user(Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv)
VALUES('%', 'user',password('123456') , 'Y','Y',' Y', Y');
16.2. Клиентская часть
Удобной программой для просмотра структуры базы данных является mysqlshow. Введите следующую команду:
mysqlshow –p mysql
В ответ вы увидите список таблиц, которые находятся в базе данных mysql.
Database: mysql
+--------+
I Tables I
+--------+
I db I
I host I
I user I
+--------+
Программа mysqlshow может вызываться с дополнительными параметрами, указанными в табл. 16.2.
Параметры программы mysqlshow Таблица 16.2
Параметр Описание ––host=имя_xocтa Задает имя хоста, к которому вы хотите подключиться --port=номер_порта Определяет номер порта для сервера MySQL --socket=сокет Указывает сокет --user=имя пользователя С помощью этого параметра можно указать нужное имя пользователя -p Запрашивает ввод пароляДля самих же операций с данными используется программа mysql. Она и является клиентом сервера. В этой программе можно использовать те же опции, что и mysqlshow. Среди многочисленных параметров программа mysql имеет один очень важный параметр –s. Я рекомендую вам всегда его использовать. Этот параметр подавляет большинство ненужных сообщений, выводимых клиентом. На медленных линиях связи это должно повысить производительность. Да и наблюдать за всеми рамочками и ненужными сообщениями особо не хочется.
16.3. Связка Apache + PHP + MySQL
Настроить данную связку, которая очень полезна при Web-программировании, можно двумя способами. Первый из них — это использовать программы, которые входят в состав дистрибутива и, как правило, устанавливаются из пакетов RPM. Второй способ заключается в загрузке последних версий Apache, MySQL и PHP и в самостоятельной их сборке из исходных текстов. Первый способ я могу порекомендовать начинающим пользователям, так как он более прост. Если же вы чувствуете уверенность в своих силах, приступайте сразу к чтению второго способа.
16.3.1. Первый способ: из пакетов RPM
Могу сразу обрадовать пользователей дистрибутивов Red Hat 7.2 и Mandrake 8.1 (или более поздних версий): вам не нужно настраивать первую часть связки — все настраивается во время установки системы. В состав дистрибутива Red Hat 7.2 входит сервер Apache 1.3.20-16, а при установке системы устанавливаются библиотека gd и интерпретатор php версии 4.0.6, а также модуль для сервера Apache. Поэтому вы можете сразу приступить к тестированию связки Apache + PHP (см. файл test .php ниже). Не забудьте установить сервер Apache, если он еще не установлен (перед выполнением данной команды перейдите в каталог, в котором находятся пакеты RPM):
rpm –Uh apache*
Затем следует настроить сервер. Настройка Apache подробно обсуждалась в гл. 12 этой книги. Не нужно настраивать сервер полностью: достаточно указать только директиву ServerName и попробовать запустить сервер.
Как правило, сервер должен успешно запуститься и функционировать. Для проверки его работы введите команду:
lynx http://localhost
Текстовый браузер lynx должен отобразить стартовую страницу Apache. После успешного запуска сервера остановите его командой:
/etc/init.d/httpd stop
Проверьте наличие библиотеки gd — она необходима для работы с графикой в РНР:
rpm –qa | grep gd
Если библиотека gd не установлена, установите ее командой, предварительно указав ту версию библиотеки, которая у вас имеется (я использую версию 1.8.4):
rpm –Uhv gd-1.8.4-4.1386.rpm
Установите пакет php, если вы его еще не установили:
rpm –Uh php*
После этого установите модуль Apache, обеспечивающий поддержку РНР:
rpm –Uh mod_php*
Данный модуль должен входить в состав дистрибутива и обычно находится на первом инсталляционном диске. Затем в файле httpd.conf найдите и раскомментируйте следующую строчку. После этого файлы с расширением . php будут правильно обрабатываться сервером:
AddType application/x-httpd-php4 .php
Теперь можно проверять правильность настройки двух компонент связки: Apache и РНР. Создайте тестовый файл test. php с таким содержимым:
<?
phpinfo();
?>
Этот файл сохраните в каталоге DocumentRoot сервера Apache. Обычно это каталог /var/www/html. После этого запустите любой браузер и введите следующий адрес: http://localhost/test.php
При этом на экране вы должны увидеть различную информацию о РНР, сервере Apache и других компонентах и библиотеках, например, о библиотеке gd (см. рис. 16.1).
Рис. 16.1. Функция phpinfo()