|
Если вы читаете эту статью, это значит, Вы, решили освоить технологию PHP и связать её с базами данных (MySQL, Oracle, DBase...). По своему опыту знаю, что сначало лезим в Интернет и пытаемся найти информацию, которая как кажется расскажет нам обо всем. Но на практике оказывается, что информации из разных источников много, все по кусочкам, приходится доходить методом научного тыка... Поэтому я и пишу для Вас мои уважаемые читатели.
От
автора:
Эта
страница создавалась как набор документов,
авторами которых являются люди уже
прошедшие все первые этапы, а также на
основе моего личного опыта. Материалы
брались из многочисленных Интернет
ресурсов, поэтому авторские права на
различные разделы документа принадлежат Им.
Все оригинальные адреса я поместил в тексте.
6 Ноября - обновился раздел "Установка PHP, MySQL, Perl" (в старой версии имелись некоторые неточности, которые исправлены сейчас)
Содержание:
0. Дистрибутивы и
ссылки
1. Введение - зачем нужен домашний
виртуальный сервер?
2. От слов к делу - установка Apache
версии 1.3.6
3. Виртуальные хосты Apache - как это
настроить?
4. Установка PHP версии 3.0.13
5. Установка Perl версии 5.004.02
6. Установка MySQL версии 9.13
7. Часто задаваемые вопросы
Папав на сайт http://apache.ru
я наткнулся на статью "Apache + Perl + PHP3 + MySQL
для Windows 95/98:
руководство по установке", за основу
я её и возьму.
Дмитрий
Котеров
Лаборатория dk, ©1999
"А не послать ли нам гонца?.."
Кинорежиссер
"Ну к чему все это, лучше бы
водки выпили"
Из писем Белинского Гоголю
Если Вы читаете этот документ, а также если у Вас установлен Windows 95/98 (а наше личное мнение такое, что эта операционная система наиболее сбалансирована с точки зрения интерфейса и удобства работы), значит, Вы уже столкнулись с проблемой виртуального домашнего сервера, а точнее, с проблемой его отсутствия! Эта небольшая статья поможет Вам скачать и установить один из лучших серверов - Apache, а также те приложения, из-за отсутствия которых народ в бешенстве сметает все остальные сервера (например, Sambar Server) со своего многострадального жесткого диска и устанавливает Apache для Windows 95/98. Имеются в виду, конечно, Perl, PHP3 и MySQL, также работающие под Windows. Прочитав эту статью и скачав дистрибутивы, Вы будете вооружены всеми инструментами, которые так необходимы для профессиональной работы в Web!
Обращаем Ваше внимание: бытует мнение, что MySQL (а тем более для Windows 95/98) нельзя получить бесплатно, а можно только купить. Так вот, можете вздохнуть с облегчением: MySQL для Windows 95/98 существует, и ее установка не будет стоить Вам и копейки!
Поговорим теперь с теми пользователями Windows 95/98, которые заглянули сюда из простого любопытства. Часто возникает ситуация, когда необходимо проверить полный вид html-страницы. Однако чаще всего это невозможно при работе дома - технологии SSI, CGI и, конечно, PHP, например, точно требуют сервера. Как же быть? Не стоит впадать в апатию - нужно просто установить на Ваш домашний компьютер (пусть даже и не подключенный к Интернет) специальную программу - Web-сервер. Вообще-то серверов существует множество - плохие и хорошие, медленные и быстрые... Мы же выбрали сервер, подходящий под последние две категории, - Apache. Самое главное то, что это чуть ли не единственный сервер, который позволяет работать в Windows 95/98 с технологиями PHP, CGI и Perl-скриптами одновременно так же просто и непринужденно, как будто у Вас стоит Unix.
"У меня для вас две новости:
плохая и хорошая. Плохая: мяса
мало, будем есть бизоний помет. И хорошая:
его-то у нас много!.."
Из выступления вождя апачей
Итак, Вы решились установить на свой компьютер Apache для Windows 95/98. В таком случае Вам следует запастись терпением и для начала скачать дистрибутив сервера - файл с именем apache_setup.exe (3.061.629 байт). Скачали? Прекрасно. Теперь самое интересное - настройка Apache для Вашей системы.
Важно: мы попросим Вас в точности выполнять перечисленные ниже шаги, не пропуская и не откладывая ни одного. В этом случае все заработает - это проверено.
subst f: C:\INTERNETи перезагрузите компьютер. У вас должен появиться виртуальный пустой диск F:.
ВНИМАНИЕ: имеются сведения, что в Windows 95/98 есть ошибка, в результате которой иногда subst-пути "сами по себе" преобразуются в абсолютные. То есть, например, иногда в рассмотренном выше примере команды
f: cd \ cd \ dir(а точнее, команда dir в своем заголовке) ошибочно выведут, что текущая директория C:\ (а не F:\, как это должно быть). Указанная ошибка чаще всего проявляется в неработоспособности Perl-транслятора. Так что лично мы не рекомендуем Вам использовать subst. Вместо этого воспользуйтесь пунктом 1.
Рекомендуем все же разместить Apache в указанном в начале каталоге, так как он максимально соответствует каталогу для реального Web-сервера Интернета. Ведь чем ближе в плане конфигурации мы будем к такому серверу, тем лучше и эффективнее сможем работать.
Поздравляем - Apache установлен! Теперь самое неприятное - его настройка.
text/html html htmИзмените ее на
text/html html htm shtml shtm sht
Следует заметить, что если Вы по каким-то причинам не хотите портить файл mime.types, то можно вместо этого прописать в файле httpd.conf (см. ниже) строки вида
AddType text/html html htm shtml shtm sht
Внимание! Это - самый ответственный момент установки. Просим соблюдать инструкции БУКВАЛЬНО.
ServerAdmin my@email.com
ServerName ApacheServerТолько не забудьте раскомментировать поле ServerName, то есть убрать символ "#" перед этим параметром (по умолчанию он закомментирован)!
DocumentRoot f:/wwwРазумеется, можете указать и любую другую директорию, если хотите. В любом случае, не забудьте ее создать, лучше сделайте это прямо сейчас!
<Directory /> Options Indexes Includes AllowOverride All </Directory>Таким образом, в этом блоке будут храниться установки для всех директорий по умолчанию (т.к. это - корневая директория).
<Directory "f:/www"> Options Indexes Includes AllowOverride All Order allow,deny Allow from all </Directory>Это - установки для директории с Вашими html-документами. Если хотите, можете установить другую директорию, главное, чтобы она совпадала с той, которая прописана в параметре DocumentRoot
UserDir f:/homeЭто будет директория, в которой хранились бы домашние страницы пользователей, если бы это был настоящий Web-сервер, а также корневые каталоги виртуальных хостов (см. ниже). Не забудьте также создать этот каталог.
DirectoryIndex index.htm index.htmlЭто - так называемые файлы индекса, которые автоматически выдаются сервером при обращении к какой-либо директории, если не указано имя html-документа. В принципе, можно добавить сюда и другие имена, например, index.phtml, если Вы будите работать с PHP и т.д.
ScriptAlias /cgi-bin/ "f:/cgi-bin/"Да, именно так, с двумя слэшами. Это будет та директория, в которой должны храниться Ваши CGI-скрипты. Если хотите, можете задать другое имя, например:
ScriptAlias /mycgi/ "f:/mycgidir/"Подобный параметр говорит Apache о том, что, если будет указан путь вида http://localhost/cgi-bin, то на самом деле следует обратиться к директории f:/cgi-bin.
<Directory "f:/cgi-bin"> AllowOverride All Options ExecCGI </Directory>
AddHandler cgi-script .bat .exeЭто говорит Apache о том, что файлы с расширением .exe и .bat нужно рассматривать как CGI-скрипты.
AddHandler server-parsed .shtml .shtm .shtИли, если Вы хотите, чтобы и обычные файлы html обрабатывались SSI, напишите так:
AddHandler server-parsed .shtml .shtm .sht .html .htm
Поздравляем - Вы настроили свой Apache, и он должен уже работать! Для запуска сервера нажмите Пуск->Программы->Apache Web Server->Start Apache as console app, при этом появится окно, очень похожее на Сеанс MS-DOS, и ничего больше не произойдет. Не закрывайте его и не трогайте до конца работы с Apache.
Несколько слов о том, как можно упростить запуск и завершение сервера. В Windows можно назначить любому ярлыку функциональную комбинацию клавиш, нажав которые, Вы запустите этот ярлык. Так что щелкните правой кнопкой на панели задач, в контекстном меню выберите Свойства, затем Настройка меню и кнопку Дополнительно. В открывшемся Проводнике назначьте ярлыку Start Apache as console app комбинацию Ctrl+Alt+A, а ярлыку Shutdown Apache as console app - Ctrl+Alt+S
Вот шаги, которые можно проделать для проверки работоспособности сервера:
http://localhost/index.htmlили просто
http://localhost/Загрузится Ваш файл.
@echo off echo Content-type: text/html echo. echo. dirТеперь в браузере наберите:
http://localhost/cgi-bin/test.batВ окне отобразится результат команды DOS dir. (Хотелось бы отметить, что указанный тест работает не на всех версиях Windows: иногда вместо того, чтобы выполнить файл test.bat, Apache выводит в браузер его содержимое. С чем это связано - не совсем ясно, однако, кажется, можно избавиться от указанной ошибки путем манипулирования с Реестром. Если у Вас test.bat не запускается, не расстраивайтесь: вряд ли Вы когда-нибудь будете писать скрипты в виде bat-файлов, тем более, что это несовместимо с Unix.)
<!--#include virtual="/cgi-bin/test.bat"-->Если bat-файлы Ваш Apache запускать не хочет (см. выше), то дождитесь установки Perl или PHP.
"Виртуальные хосты - хосты,
имеющие уникальный адрес
в Интернет, эмулируемые и поддерживаемые
сервером"
Древнее языческое заклинание
Итак, Вы установили Apache. Получили, таким образом, директорию f:/www для хранения документов и f:/cgi-bin для CGI. Но вот беда: в Интернете вы поддерживаете несколько серверов, а Apache создал для вас только один. Конечно, можно структуру этих несколькох серверов хранить на одном сервере, однако проще и удобнее было бы создать несколько виртуальных хостов с помощью Apache, например, один с именем serv1 и адресом 127.0.0.2, а другой - с именем serv2 и адресом 127.0.0.3. (Конечно, вместо "serv1" и "serv2" Вам нужно будет указать желаемые имена Ваших виртуальных хостов. Советуем назвать их так же, как и на Вашем настоящем Web-сервере - это может многое упростить при программировании скриптов.)
Как это принято в Unix, каждый сервер будет представлен своим каталогом в директории f:/home с именем, совпадающим с именем сервера. Например, сервер serv1 будет храниться в директории f:/home/serv1, которую Вам необходимо создать прямо сейчас. В этой директории будут находиться:
Последние две директории (www и cgi) Вам тоже необходимо создать прямо сейчас.
Далее, для установки виртуального хоста необходимо сделать некоторые изменеия в файле конфигурации Apache httpd.conf (см. выше), а также в некоторых файлах Windows. Вот необходимые действия:
#----serv1 <VirtualHost 127.0.0.2> ServerAdmin webmaster@serv1.ru ServerName serv1 DocumentRoot "f:/home/serv1/www" ScriptAlias /cgi/ "f:/home/serv1/cgi/" ErrorLog f:/home/serv1/error.log CustomLog f:/home/serv1/access.log common </VirtualHost>При желании можно добавить и другие параметры (например, DirectoryIndex и т.д.) Вообще, не переопределенные параметры наследуются виртуальным хостом от главного.
127.0.0.1 localhostименно эта строка и задает соответствие имени localhost адресу 127.0.0.1. (Ради справедливости следует сказать, что имя localhost работает и без указанной выше строки. Ну и выдумщики же эти парни из компании Microsoft!) Для нашего виртуального хоста надо добавить соответствующую строчку, чтобы файл выглядел так:
127.0.0.1 localhost 127.0.0.2 serv1
Ну вот, мы создали один виртуальный хост! Если будет необходимо сделать второй, нужно просто проделать аналогичные действия, заменив параметры, связанные с расположением хоста на диске. Главное, не забудьте в этом случае указать другой IP-адрес (лучше всего указывать их последовательно, начиная с 127.0.0.2, затем 127.0.0.3 и т.д. - в этом случае все работает корректно). Желательно также для этих целей не указывать IP-адрус http://127.0.0.1, так как это - адрес главного сервера.
Кстати, необходимо заметить, что главный хост (невиртуальный, тот, который мы создали в разделах 1 и 2) по-прежнему доступен по адресу http://127.0.0.1 или http://localhost. Более того, его директория cgi-bin "видна" всем созданным виртуальным хостам, так что Вы можете ее использовать.
И последнее: если описанная выше схема настройки виртуальных хостов у Вас не заработала, обратитесь к списку часто задаваемых вопросов в конце этой статьи.
"- Больной, читайте первую
строчку сверху!
- Ша, Бэ, Пэ Ха Пэ... Доктор, кодировочку-то
пофиксите..."
Народный фольклор
В отличие от установки Apache, установка PHP короче, однако мы бы не сказали, что проще. Дело в том, что, во-первых, у PHP нет нормальной setup-программы, как у Apache, а во-вторых, при его установке необходимо также настраивать сервер.
Итак, прежде всего поговорим о каталоге, в котором у Вас будут находиться файлы PHP. В дистрибутиве по умолчанию стоит такой:
f:/usr/local/php3
Если Вы физически не можете или просто не хотите иметь такой каталог (хотя, если Вы читали инструкцию по установке Apache, все должно быть в порядке), то Вы вольны установить PHP в другой каталог, но тогда Вам предстоит следующее: в файле php_iis_reg.inf из дистрибутива PHP найти ВСЕ строки "f:\usr\local\php3" (их там, кстати, 6 штук) и заменить их на тот каталог, где Вы предполагаете разместить PHP. Могу сразу сказать, что это не самое приятное провождение времени, но уж ничего не поделаешь, такова жизнь...
Как обычно, приведем по порядку те действия по установке PHP, которые у нас привели к результату.
;extension=имя_модуля.dllЕсли Вы хотите включить какой-нибудь модуль (по умолчанию уже включена поддержка GD и mSQL), раскомментируйте соответствующую строку (уберите точку с запятой).
application/x-httpd-php3 phtml php3 php
<Directory "f:/usr/local/php3"> Options ExecCGI </Directory> ScriptAlias "/__php_dir__/" "f:/usr/local/php3/" Action application/x-httpd-php3 "/__php_dir__/php.exe"
<? echo "It works!<br>\n"; phpinfo(); ?>
Напоминаем, что php-скрипты - не то же самое, что cgi-скрипты. В частности, если cgi-скрипты обычно располагают в /cgi-bin/, то php-скрипт должен лежать в директории с документами. Иными словами, файл в этом примере должен называеться примерно так: f:/www/test.php3
"Язык может считаться
законченным только тогда, когда
в его синтаксисе используются все клавиши
на клавиатуре"
Отец-основатель Perl
Это совсем просто, за исключением, может быть, выбора директории для Perl. А именно, Вы ДОЛЖНЫ разместить Perl в той же директории, в которой он находится на Вашем настоящем Web-сервере. Заметьте, что это очень важно, так как Perl требует, чтобы в каждом скрипте первой строкой стоял путь к Perl-интерпретатору; например, эта строка может выглядеть так:
#!/usr/local/bin/perlЭту же строку можно было бы написать и так:
#!/usr/local/bin/perl.exeили даже так:
#!f:\usr\local\bin\perl.exeЭто заставляет искать Perl-интерпретатор в директории f:/usr/local/bin/ (если диск f: не указан, это означает, что он совпадает с диском, на котором расположен Apache). Ясно, что если Вы установите Perl не в такую же директорию, как на настоящем Web-сервере, Вам придется каждый раз менять эту самую первую строку во всех скриптах при закачке их на сервер. Итак, далее мы будем считать, что эта директория такова, как на большинстве Apache-серверов:
f:/usr/local/bin
ВНИМАНИЕ: очень распространенной ошибкой является установка Perl не в ту директорию или не на тот диск. Еще раз обращаем внимание на то, где должен быть расположен транслятор. Если Вы все же по какой-то необъяснимой причине не придерживаетесь нашего совета, то проверьте первую строку в Вашем скрипте. Она должна указывать не на директорию с Perl, а на исполнимый файл perl.exe. Напоминаем, что#!/usr/local/bin/perlзаставляет искать Perl-интерпретатор perl.exe в директории f:/usr/local/bin/, а не f:/usr/local/bin/perlЕсли Вы все же установите пути неправильно, Apache выдаст непонятное сообщение об ошибке, а в errors.log появится сообщение: couldn't spawn child process. В этом случае проверьте все еще раз. Если кажется, что все в порядке, то, возможно, имеет место описанная выше ошибка с программой subst.
Вот шаги, приводящие к цели:
f:/usr/local/binЗатем скачайте дистрибутив Perl - файл с именем perl_setup.exe (436.137 байт), желательно в только что созданную директорию. Это саморазворачивающийся архив, Вам нужно будет просто его запустить, чтобы разархивировать в текущую директорию. (Заметим, что версия Perl в этом архиве довольно стара и пригодна разве что для демонстрационных целей. В частности, в ней нет ни одного стандартного модуля. Поэтому, если Вы хотите использовать Perl в сколько-нибудь серьезных целях, Вам придется установить более свежую версию. Как это сделать описано в списке часто задаваемых вопросов. Все же рекомендуем Вам установить сначала предлагаемый дистрибутив, благо он очень маленький, а уже потом - новую версию поверх.)
AddHandler cgi-script .bat .exeЗамените ее на
AddHandler cgi-script .bat .exe .pl .cgiКак это ни странно, но эту директиву AddHandler иногда указывать не обязательно. Однако лучше перестраховаться...
Вот, собственно, и все. Можете пользоваться Perl-транслятором. Для проверки его работоспособности используйте такой скрипт (помещенный, разумеется, в директорию cgi-bin или аналогичную):
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "It works!<br>\n";
system("dir");
Что ж, очень полезно... Даже
чересчур.
Дмитрий Котеров
Сначала определимся: зачем же вообще нужны базы данных Web-программисту? Неужели не проще писать все самому? Ведь обычно объем данных не очень велик (если Вы только не пишите поисковую систему). Наш личный опыт таков: оказывается, стоит затратить какое-то время на изучение MySQL - это удивительно мощный инструмент, который сэкономит в будущем немало часов, потраченных на отладку "взбесившегося" скрипта.
Итак, Вы решили установить у себя на локальном Apache поддержку MySQL. Как ни странно, это даже во многом проще, чем заставить работать Perl. Прежде чем привести точные инструкции, хотелось бы уточнить два момента:
Что ж, приступим.
@echo off f:\usr\local\mysql\bin\mysqld.exe --basedir f:/usr/local/mysql f:\usr\local\apache\Apache.exe
@echo off f:\usr\local\apache\Apache.exe -d f:\USR\LOCAL\APACHE -k shutdown "f:\usr\local\mysql\bin\mysqladmin.exe" -u root shutdown
Теперь для удобства можно создать ярлыки на Рабочем столе для этих файлов. Рекомендуем также назначить этим ярлыкам "горячие" клавиши: например, для запуска сервера - Ctrl+Alt+A, а для завершения работы - Ctrl+Alt+S. Кроме того, лучше поставить у этих ярлыков параметры "Запускать свернутыми в значок". Все это сильно упростит жизнь в дальнейшем.
f: cd f:\usr\local\mysql\bin mysqladmin create testbase
extension=php3_mysql.dllЕсли в ее начале стоит точка с запятой, уберите ее - иначе PHP не сможет опознавать функции для работы с MySQL
<?
Error_Reporting(1+2+4);
define("DBName","testbase");
define("HostName","localhost");
define("UserName","root");
define("Password","");
if(!mysql_connect(HostName,UserName,Password))
{ echo "Не могу соединиться с базой ".DBName."!<br>"; exit; }
// Создаем таблицу test. Если такая таблица уже есть, сообщение об ошибке будет
// подавлено, т.к. используется "@"
@mysql(DBName,"create table test(id int,a text)");
// Вставляем в таблицу 10 записей
for($i=0; $i<10; $i++)
{ $id=time();
mysql(DBName,"insert into test(id,a) values($id,'Строка $i!')");
}
// Выводим все записи
$r=mysql(DBName,"select * from test");
for($i=0; $i<mysql_numrows($r); $i++)
{ $f=mysql_fetch_array($r);
echo "$f[id] -> $f[a]<br>\n";
}
?>
Обращаем Ваше внимание на макросы DBName, HostName,
UserName и Password. DBName должен
содержать имя базы данных. HostName - всегда localhost,
ведь мы работаем на локальном компьютере. В
макросе UserName проще всего подставлять root,
который является собственником всех таблиц.
При установке MySQL пользователю root не
назначается пароль, так что макрос Password
равен пустой строке."А здесь - Ваша цитата"
Бьерн Страуструп
Эта глава содержит ответы на самые распространенные вопросы, возникающи при установке описанного программного обеспечения. Пожалуйста, ознакомьтесь с ней.
Q: Apache установился и запускается
нормально, но при попытке открытия какой-нибудь
страницы Internet Explorer настоятельно предлагает
подключиться к Сети.
A: На вкладке "Соединение" (или
"Подключение") в Свойствах IE
установите флажок "Использовать
локальную сеть", даже если ее у Вас нет.
Q: При запуске окно Apache открывается и
тут же закрывается, сервер из браузера "не
виден".
A: Скорее всего, синтаксическая ошибка в httpd.conf.
Посмотрите, что пишется в файле f:/usr/local/apache/logs/error.log
- скорее всего, там будет указана строка, в
которой произошла ошибка.
Q: Ни один скрипт не работает - при
запуске открывается маленькое окошко MS-DOS, в
нем быстро пробегают строки, и потом оно
закрывается.
A: Эта ошибка часто возникает при
использовании различных некорректно
написанных резидентных антивирусных
сторожей (например, SpiderGuard от Dr.Web).
Боюсь, Вам придется от них отказаться.
Q: Виртуальные хосты (а иногда и
обычный, основной хост) из браузера
недоступны ни по имени, ни по ip-адресу.
A: Эта проблема часто возникает на
компьютерах, объединенных в локальную сеть
и совместно использующих одно подключение
к Интернету. Обычно в таких случаях
используется WinGate - программа,
обеспечивающая этот совместный доступ. В
ней-то и заключена вся проблема. Сделайте
следующее: выберите какой-нибудь браузер,
которым Вы реже всего пользуетесь (например,
Netscape), и поставьте в настройках WinGate
для его запускаемого файла (в нашем примере
- netscape.exe) режим локального доступа. В
этом случае Вы сможете работать с локальным
Apache через этот (и только этот) браузер. Это
не очень приятно, но, боюсь, другого решения
для WinGate не существует...
Q: Меня не устраивает указанная в
статье версия Perl - уж очень древний...
A: Не проблема установить новый, если Вы
уже настроили старый. Для этого проделайте
следующее: Скачайте с http://www.activestate.com
MS Installer (он лежит в разделе Downloads,
рядом с самым свежим Перлом) и запустите его.
Скачайте оттуда же perlxxxx.msi (xxxx
зависит от версии Perl, рекомендую Вам
поставить самую наисвежайшую).
"Снесите под корень" старый Перл.
Запустите "start perlxxxx.msi" из окна DOS.
Выберите полную установку, и директорию - f:/usr/local
(без bin!), и пусть он пропишет в autoexec.bat
то, что хочет.
В дистрибутив включена полная документация,
включая описания стандартных пакетов.
Q: Никак не могу установить поддержку
MySQL в Perl...
A: Проделайте следующее:
Q: А как бы мне поставить PHP4?
A: Боюсь, это очень сложная задача.
Насколько нам известно, пока не
существует такой версии PHP4, которая бы
так же легко, как PHP3, установилась под Windows.
Впрочем, можем дать один совет: поставьте
сначала PHP3, а уж затем поверх - PHP4 (в ту же
самую директорию), и молитесь...
Q: Я сделал все, как описано в
статье, но... 3 ноября 2000, 17:21
A: dklab@dizain.ru.
Дмитрий Котеров
Лаборатория dk, ©2000
На сайте http://www.InfoCity.kiev.ua (-виртуальный город технической документации) я обнаружил следующее:
СУБД MySQL использует специальную базу данных для предоставления прав доступа к своим базам данных. Эти права могут базироваться на именах серверов и/или пользователей и предоставляться для одной или нескольких баз данных
Пользовательские аккаунты могут быть снабжены паролями. При обращении к базе данных, пароль шифруется. Поэтому он не может быть перехвачен и использован посторонним (это мнение автора СУБД...).
СУБД MySQL имеет три таблицы, а именно:
| Поле | Тип | Null | Ключ | Умолчание | Extra |
|---|---|---|---|---|---|
| Хост | char(60) | PRI | |||
| Db | char(32) | PRI | |||
| Пользователь | char(16) | PRI | |||
| Select_priv | char(1) | N | |||
| Insert_priv | char(1) | N | |||
| Update_priv | char(1) | N | |||
| Delete_priv | char(1) | N | |||
| Create_priv | char(1) | N | |||
| Drop_priv | char(1) | N |
| Поле | Тип | Null | Ключ | Умолчание | Extra |
|---|---|---|---|---|---|
| Хост | char(60) | PRI | |||
| Db | char(32) | PRI | |||
| Select_priv | char(1) | N | |||
| Insert_priv | char(1) | N | |||
| Update_priv | char(1) | N | |||
| Delete_priv | char(1) | N | |||
| Create_priv | char(1) | N | |||
| Drop_priv | char(1) | N |
| Поле | Тип | Null | Key | Умолчание | Extra |
|---|---|---|---|---|---|
| Хост | char(60) | PRI | |||
| Пользователь | char(16) | PRI | |||
| Пароль | char(8) | ||||
| Select_priv | char(1) | N | |||
| Insert_priv | char(1) | N | |||
| Update_priv | char(1) | N | |||
| Delete_priv | char(1) | N | |||
| Create_priv | char(1) | N | |||
| Drop_priv | char(1) | N | |||
| Reload_priv | char(1) | N | |||
| Shutdown_priv | char(1) | N | |||
| Process_priv | char(1) | N | |||
| File_priv | char(1) | N |
Пример добавления новых пользователей:
$ mysql mysql
mysql> INSERT INTO user VALUES ('%','monty',password('something'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user (host,user,password) values('localhost','dummy','');
mysql> INSERT INTO user VALUES ('%','admin','','N','N','N','N','N','N','Y','N','Y','N');
mysql> quit
$ mysqladmin reload
Добавлено три новых пользователя (юзверя):
| monty: | Суперпользователь (администратор),
должен использовать пароль, для работы
с mysql. |
| dummy: | Должен быть допущен к
индивидуальной базе данных по таблице 'db
'. |
| admin: | Не нуждается в пароле, но разрешено выполнение только команд 'mysqladmin reload' and 'mysqladmin processlist'. Может быть допущен к индивидуальной базе данных через таблицу 'db'. |
ВНИМАНИЕ! Вы ДОЛЖНЫ использовать
функцию password() при создании
пользователя, имеющего пароль. СУБД MySQL
ожидает получить зашифрованный пароль.
Атрибуты, установленные в таблице пользователей перекрывают атрибуты, установленные в таблице DB. Если сервер поддерживает много баз данных, лучше создавать пользователей без прав доступа в таблице пользователей и назначать им права доступа к базе данных по таблице db.
Если Вы используете MIT threads package, обратите внимание, что имя localhost не будет работать, так как MIT threads package не поддерживает socket-подключения. Это означает, что Вы должны всегда определять ваш hostname (имя сервера) при подключении, даже если Вы работаете с одним и тем же сервером.
Следует помнить следующие правила при настройке прав доступа:
| Пользователь | Сортируется по именам серверов и пользователей. |
| db | Сортируется по именам серверов, пользователей и баз данных. |
| Сервер | Сортируется по именам серверов и баз данных. |
Начиная с версии 3.20.19 сервера введена еще одна хитрость, для попытки вычислить, как данный пользователь обратится к данной базе данных. Допустим существование пользователя с именем Джо, который зарегистрирован так:
INSERT INTO user VALUES('%.external.domain.com','','','N','N','N', 'N','N','N','N','N','N','N');
Проверка таблицы баз данных будет выполнена для пользователя '' (пустое имя), а не для пользователя Джо, даже если пользователь, Джо имеет запись в таблице доступа к базам данных (db таблице).
Создание пользовательских аккаунтов - вероятно, наиболее путающий аспект СУБД MySQL, (особенно, если никогда не имел с ней дела), так что не удивляйтесь, если потребуется некоторое время, чтобы во всем разобраться и получить парочку несколько неприятных сюрпризов. Использование программы mysqlaccess делает управление доступом несколько более ясным.
Вообще лучше избегать использования регулярных выражений SQL в полях имени сервера. Это упрощает отладку.
Конкретно, установите все поля "имя сервера" в '%' и очистите таблицу серверов. Как только все начнет нормально функционировать, можно начинать эксперименты с добавлением имен серверов в таблицу серверов в случае такой необходимости.
Если получено сообщение об ошибке 'Access denied', то скорее всего вы нормально связались с демоном mysqld, но имеете неправильную информацию в вашей таблице пользователей.
Зашифрованный пароль сохраняется в таблице пользователей ('user ').
Этот вопрос хорошо изложен в трудах Alexey Pautov rldp@ftp.botik.ru.
Он написал толковое описание
команд MySQL и примерами работы. Электронный
вариант можно взять здесь:
MySQL
(rus)
Так же Вам может пригодиться форум WWWBoard,
где все задают вопросы, а специалисты
помогут Вам найти ответ.
Сколько я не читал описаний PHP на русском, все-же в конце понял, что лучше оригинального описания на английском языке не найти. По крайней мере сначала читайте русские статьи, но затем нужно скачать полное родное описание, где есть ответы почти на все вопросы. Вы как раз к тому времени будете знать, что конретно Вам непонятно.
- Вступление в PHP и MySQL.- коротко, но всерьез рассказаны принципы работы с БД MySQL, не забывая рассказать и что такое PHP, где его можно употреблять, все сопровождается примерами.
- PHP/FI Version 2.0 - это уже более полная техническая документация с рассмотрением синтаксиса языка.
- HotMail своими руками, или Что может PHP - это уже практическая работа по освоению языка.
-Оригинальное техническое описание языка PHP - это описание разработчиков (на английском) - наиболее оплная информация по всем функциям и методам.
А также советую посетить сайты,
посвященные PHP программированию:
http://phpclub.unet.ru/
http://phptalk.unet.ru/
1) Подключение
к серверу MySQL( mysql_connect )
$openConn2db = mysql_connect( "$hostname:$port", "$username",
"$password" );
2) Выбор
базы данных (database) ( mysql_select_db
)
$dbSelected = mysql_select_db( $dbname, $openConn2db );
3) Создать
запрос(query) к базе данных (
mysql_query )
$queryResultID = mysql_query( $DBquery, $openConn2db );
4) определение
количества полей(number of fields)
в результате запроса( mysql_num_fields )
$numFields = mysql_num_fields( $queryResultID );
5) определение
количества строк
возвращаемых запросом(number of rows) ( mysql_num_rows )
$numRows = mysql_num_rows( $queryResultID );
6) создание
массива со строками
результата( mysql_fetch_row )
$correspondingRowArray = mysql_fetch_row( $queryResultID );
[ Выясните размер, если вы желаете
использовать цикл для выборки результатов
запроса]
$correspondingRowArraySize = sizeof( $correspondingRowArray );
7) выборка
данных из первого элемента
массива
$content = current( $correspondingRowArray ); echo "This is the first array
element: $contentn";
8) выборка
данных из следующего
элемента массива [ done in 'for' loop ]
$content = next( $correspondingRowArray ); echo "This is the next array
element: $contentn";
9) закрытие
соединения с сервером MySQL(
mysql_close )
$closedConn2db = mysql_close( $connLinkID );
Для примера и для дальнейшей работы с БД MySQL, Вы можете посмотреть мой скрипт, написанный для работы с этой БД - весит всего 9Kb, а может соединяться с БД, посылать SQL - запрос, редактировать, сортировать, удалять, разбивать на страницы. - Work with MySQL.zip (3.6 Kb)
Описание функций для работы с Oracle - находится в оригинальной документации по PHP. Я не буду писать перевод на русский, а лучше покажу как ими пользоваться на примерах скриптов: Oracle scripts.zip (4,289 Kb)
Новые документы смотрите на странице: http://www.nvkz.kuzbass.net/cyber-book
С уважением, SelestaSVZ