Сервер MYSQL

Автор работы: Пользователь скрыл имя, 25 Января 2013 в 07:29, курсовая работа

Краткое описание

Задание
Используя MySQL, необходимо создать базу данных для электронного магазина (Web-сервера), торгующего компьютерной техникой.
Для решения поставленной завдачи, используем комплект «Denwer».
Комплект Денвер-2 имеет нечто вроде ядра – так называемый «базовый комплект», занимающий всего около 2 MB. Базовый комплект содержит большинство необходимых для разработки web-страниц программ и утилит:
• сервер Apache; ...

Содержание

Задание…………………………………………………………………………….2
Введение…………………………………………………………………………..2
Программное обеспечение……………………………………………………….2
Работа с виртуальными хостами…………………………………………………5
Работа с сервером MySQL……………………………………………………….6
Работа с таблицами БД…………………………………………………………...7
Управление данными……………………………………………………………11
Система безопасности MySQL…………………………………………………13
PHP страницы……………………………………………………………………20

Вложенные файлы: 1 файл

ПЛАН.docx

— 627.38 Кб (Скачать файл)

 

Таблица host позволяет задать основные разрешения на межкомпьютерном уровне. При проверке прав доступа MySQL ищет в таблице db соответствие имени пользователя и его машине. Если он находит запись, соответствующую имени пользователя, поле host которой пусто, MySQL обращается к таблице host и использует пересечение обоих прав для определения окончательного права доступа. Если у вас есть группа серверов, которые вы считаете менее защищенными, то вы можете запретить для них все права записи. Если «bob» заходит с одной из таких машин, и его запись в таблице db содержит пустое поле host, ему будет запрещена операция записи, даже если она разрешена ему согласно таблице db.

 

Таблицы tables_priv  и  columns_priv. Эти две таблицы, по сути, уточняют данные, имеющиеся в таблице db. Именно, право на всякую операцию сначала проверяется по таблице db, затем по таблице tables_priv , затем по таблице columns_priv. Операция разрешается, если одна из них дает разрешение. С помощью этих таблиц можно сузить область действия разрешений до уровня таблиц и колонок. Управлять этими таблицами можно через команды SQL GRANT и REVOKE.

 

Последовательность  контроля доступа. MySQL осуществляет контроль доступа в два этапа. Первый этап - подключение. При подключении проводятся две проверки. Сначала MySQL проверяет, есть ли в таблице user запись, соответствующая имени пользователя и машины, с которой он подключается. Поиск соответствия основывается на правилах, которые мы обсудили раньше. Если соответствие не найдено, в доступе отказывается. В случае, когда соответствующая запись найдена и имеет непустое поле Password , необходимо ввести правильный пароль. Неправильный пароль приводит к отклонению запроса на подключение.

Если  соединение установлено, MySQL переходит к этапу верификации запроса. При этом сделанные вами запросы сопоставляются с вашими правами. Эти права MySQL проверяет по таблицам user, db, host, tables_pnv и columns_priv. Как только найдено соответствие в таблице user с положительным разрешением, команда немедленно выполняется. В противном случае MySQL продолжает поиск в следующих таблицах в указанном порядке:

    1. db
    2. tables_priv
    3. columns_priv

Если  таблица db содержит разрешение, дальнейшая проверка прекращается и выполняется команда. Если нет, то MySQL ищет соответствие в таблице tables_priv . Если это команда SELECT, объединяющая две таблицы, то пользователь должен иметь разрешения для обеих этих таблиц. Если хотя бы одна из записей отказывает в доступе или отсутствует, MySQL точно таким же способом проверяет все колонки в таблице columns_priv.

 

Изменение прав доступа. MySQL загружает таблицы доступа при запуске сервера. Преимуществом такого подхода по сравнению с динамическим обращением к таблицам является скорость. Отрицательная сторона состоит в том, что изменения, производимые в таблицах доступа MySQL, не сразу начинают действовать. Для того чтобы сервер увидел эти изменения, необходимо выполнить команду mysqladmin reload. Если таблицы изменяются с помощью SQL-команд GRANT или REVOKE, явно перегружать таблицы не требуется.

 

PhpMyAdmin дает нам возможность управлять пользователями с помощью раздела привилегии:

 

В разделе привилегии выбираем пункт  добавить нового пользователя.

Создаем пользователя Bekshenev с паролем 09111972 и без глобальных прав доступа:

 

 

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

 

 

 

 

 

 

Выбираем bekand и нажимаем «Пошел».

Теперь  для таблицы bekand назначаем права select, insert, update, delete и нажимаем пошел:

 

Права для  таблицы назначены.

 

На этом построение самой базы данных для  магазина, торгующего компьютерной техникой заканчивается.

 

PHP страницы.

 

Далее создадим страничку index.php (эта категории товаров и список товаров в категориях):

 

<? //главная страница 
 
function showGood($a,$cat) { //рисует таблицу с картинкой товара $a, его названием, ценой... 
     //$cat -- сторка, которая пишется вверху таблицы -- это путь к категории, в которой находится товар 
 
 echo "<center><p><table width=95% border=0 cellspacing=1 cellpadding=2 bgcolor=#E1E6FC>\n"; 
 
 echo "<tr bgcolor=#D1D9F8>\n<td colspan=3><font color=#3551C7>".$cat."</font></td>\n</tr>\n"; 
 
 echo "<tr bgcolor=#FFFFFF>\n<td rowspan=2 width=1% align=center valign=top>\n"; 
 //теперь показать фотографию товара 
 
 //изображение товара 
 if ($a[4] && file_exists("goods_pictures/".$a[4])) 
  echo "<img src=\"goods_pictures/".$a[4]."\" border=0>\n"; 
 else //нет фотографии 
  echo "<img src=\"images/no_image.jpg\" border=0>\n"; 
 echo "</td>\n"; 
 
 echo "<td width=80%>\n"; 
 echo "<font class=cat><b>".$a[2]."</b></font>\n"; 
 if ($a[3]>0) { //писать ссылку на добавление в корзину, только если цена > 0 
  $f=2; 
  echo "</td><td bgcolor=#FFFFFF align=center><a href=\"javascript:open_window('cart.php?add=".$a[1]."',400,300);\"><img src=\"images/cart.jpg\" border=0 alt=\"в коpзину\"></a></td>\n"; 
 } 
 else $f = 1; 
 
 echo "<tr bgcolor=#FFFFFF><td colspan=$f><b>Цена: <font class=cat color=red>"; 
 echo $a[3] ? $a[3]."$" : "n/a"; 
 echo "</font></b></td></tr>\n"; 
 
 echo "</table></p></center>\n\n"; 
 
}; 
 
 include("head.incl"); //логотип 
 
 //основная таблица: здесь список категорий, товары и т.д. 
?> 
<table border=0 width=100% cellspacing=5 cellpadding=5> 
 
<tr> 
<? 
 if ($CID || isset($GID)) { // список категорий "сбоку" 
  echo "<td width=120 valign=top><table border=0 cellspacing=2 width=120>"; 
  //список категорий 
  processCategories($CID); 
  echo "</table>"; 
  echo "</td>"; 
 }; 
?> 
 
<td valign=top width=100%> 
 
<? 
 
 if ($CID) { //показать товары выбранной категории 
 
   $q = mysql_query("SELECT * FROM Categories WHERE CID=$CID") or die (mysql_error()); 
   if (!($r = mysql_fetch_row($q))) exit; 
 
   echo "<font class=cat><b><u>$r[1]:</u></b></font>\n<center>"; 
 
   //теперь показать товары 
   $q = mysql_query("SELECT * FROM GoodsList WHERE CID=$CID ORDER BY Price") or die (mysql_error()); 
   $i=0; 
   $result = array(); 
   while ($row = mysql_fetch_row($q)) { 
    $result[$i] = $row; 
    $i++; 
   }; 
 
   if (!$i) { //если кол-во товаров в категории = 0 
 
    echo "&nbsp;&nbsp;&nbsp;&nbsp;&lt; нет товаров >"; 
   } 
   else { //$i != 0 -- показываем товары в этой категории 
 
    for ($i=0; $i<count($result); $i++) 
     showGood($result[$i],$r[1],true); 
   }; 
   echo "</center>"; 
 } 
 else { //показать начальную страницу (витрину) -- некоторый текст + развернутый список всех категорий 
 
   echo "<center><table width=78%>Здравствуйте"; 
   if (isset($log)) echo ", <b>".stripslashes($log)."</b>"
   echo "!<br>Добро пожаловать в наш магазин!</table><br>\n"; 
 
   //категории помещаем в теблицу -- в 2 столбца, поэтому надо посчитать кол-во корневых категорий -- половину в один столбец, 
   //половину -- в другой 
   $q = mysql_query("SELECT * FROM Categories ORDER BY Name") or die (mysql_error()); 
   $k=0; 
   $result = array(); 
   while ($row = mysql_fetch_row($q)) { 
    $result[$k++] = $row; 
   }; 
 
   echo "<table width=80% border=0>\n<tr><td width=50%>"; 
   for ($i=0; $i<$k/2; $i++) 
    echo "<a href=\"index.php?CID=".$result[$i][0]."\">".$result[$i][1]."</a><br>"; 
 
   echo "</td>\n<td valign=top>\n"; 
 
   for (; $i<$k; $i++) 
    echo "<a href=\"index.php?CID=".$result[$i][0]."\">".$result[$i][1]."</a><br>"; 
 
   echo "</td>\n</tr>\n</table></center>\n"; 
 }; 
?> 
</td> 
 
</table> 
 
</body> 
</html>

 

 




Информация о работе Сервер MYSQL