Установка

Установить и настроить MySQL.

Какую версию MySQL выбрать? Я буду использовать MySQL 5.x, а именно 5.0.18.

Приступаем к установке. Ставить будем - как положено, при помощи пакета Windows Installer. Для этого качаем с сайта MySQL соответствующий архив (для моего случая - mysql-5.0.18-win32.zip), распаковываем, и запускаем находящийся там файл setup.exe.

Останавливаемся, как всегда на следующем окошке:

Рисунок 1

Мы с вами люди продвинутые, поэтому вбираем выборочную установку, как показано на рисунке. Попадаем на выбор компонентов:

Рисунок 2

Я обычно меняю путь установки, Компоненты оставляю по умолчанию, за исключением того, что ставлю Benchmark Suite - набор утилит для тестирования производительности базы. Отмечу, что он требует установленного в системе Perl. У меня он есть.

Все! Жмем Next и ждем, пока установщик закончит работу. После копирования всего, чего нужно, инсталлятор предложит вам создать аккаунт на MySQL.com. Этот шаг смело можете пропустить.

Рисунок 3
После чего появится сообщение о завершении установки.

Рисунок 4

Галочку НЕ снимайте и нажимайте Finish. Теперь самое интересное :: Далее - читать не придется, в основном придется смотреть картинки. Согласитесь, это много приятнее. Итак:

Настройка

Нажимаем Next, после чего нам предложат выбрать тип настройки.

Рисунок 5

От предложения использовать стандартную конфигурацию мы откажемся, и выберем конфигурацию подробную - "Detailed Configuration"

Появится следующее окно:

Рисунок 6

Тут нам предлагают определиться с типом сервера. От этого будет зависеть использование сервером MySQL ресурсов машины. На выбор дается три варианта:

  • Developer Machine. Как следует из названия, использовать этот вариант следует, если вы ставите MySQL на машине разработчика, где крутится еще куча всякого нужного (и ненужного, как обычно у разработчиков) софта. В этом случае MySQL автоматически будет настроен на минимальное использование ресурсов.
  • Server Machine. В этом случае предполагается, машина серверная и что на машине, кроме MySQL, крутится еще парочка серверных приложений. Например - Apache :. В этом случае, очевидно, MySQL будет настроен на совместное использование ресурсов с несколькими, потенциально ресурсоемкими приложениями.
  • Dedicated MySQL Server Machine. Последний вариант - это монопольное использование ресурсов MySQL. Если у вас есть выделенная машина ТОЛЬКО под базу MySQL, я вас поздравляю - выбирайте этот вариант.

Я использую вариант Server Machine, поскольку девелопером не являюсь. При имеющихся ресурсах все работает отлично.

Следующее окно предлагает нам выбрать тип хранилища базы:

Рисунок 7
  • Mutltifunctional Database. Я обычно выбираю эту опцию. В этом случае создаются хранилища "общего назначения", с возможностью использования как InnoDB, так и MyISAM таблиц.
  • Transactional Database Only. База оптимизируется для серверов приложений или Web приложений с большим числом транзакций. Основным движком для хранилищ становится InnoDB.
  • Non-Transacional Database Only. Используется для большинства простых Web приложений, для сбора статистики и т. п. Активируется только движок MyISAM.

Что выбрать - ваше дело. Преимущества транзакционных таблиц InnoDB:

  • Надежность.
  • Можно сочетать несколько операторов и принимать все эти операторы одной командой COMMIT.
  • Поддержка откатов
  • Если произойдет сбой во время обновления, все изменения будут восстановлены (в нетранзакционных таблицах все внесенные изменения не могут быть отменены).
  • Лучше обеспечивает параллелизм при одновременных обновлениях таблицы и чтении.

Преимущества нетранзакционных таблиц MyISAM:

  • Скорость
  • Меньший расход дискового пространства
  • Для обновлений используется меньше памяти.

Так что отталкивайтесь от задач. Для разработчика, на мой взгляд, лучшим будет первый вариант.

При выборе вариантов 1 и 2, вам предложат выбрать расположение табличных пространств InnoDB

Рисунок 8

Выбираем, жмем Next. Теперь будем выбирать, на какую загрузку мы рассчитываем:

Рисунок 9

Я, не мудрствуя лукаво, выбираю вариант номер 1 - Decision Support (DSS)/OLAP - ок. 20 одновременных подключений. Вариант Online Transaction Processing (OLTP) рассчитан на базы, которые обслуживают более 500 активных подключений. Вариант Manual Setting - позволяет выбрать число потенциальных конкурирующих подключений вручную.

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

Рисунок 10

Тут - на ваше усмотрение. В принципе, если Web сервер расположен на той же машине, можно и отключить галочку. Локальные взаимодействия идут через именованные каналы.

Внимание!!! Этап очень важный. Определение кодировки символов, которую MySQL будет использовать в таблицах по умолчанию. Выбирайте ее здесь, чтобы потом не мучится с ручной настройкой через утилиты командной строки. Опытным пользователям ручная настройка проблем не создаст, однако если есть возможность сделать проще, почему бы ею не воспользоваться? В общем случае - достаточно выставить все параметры так, как показано на рисунке ниже:

Рисунок 11

Следующее окно (потерпите, осталось совсем немного):

Рисунок 12

Тут все понятно - ставить ли MySQL как службу, выбор имени службы (оставляем по умолчанию), автоматический либо ручной запуск службы ( на ваше усмотрение). Я также устанавливаю галочку Include Bin Directory In Windows PATH для того, чтобы удобнее было работать в FAR с утилитами командной строки MySQL.

Что касается установки в качестве службы - все что мы говорили про Apache применимо и здесь. В том числе - и смена пользователя, от имени которого выполняется служба MySQL.

Следующий шаг - настройка безопасности

Рисунок 13

Здесь мы устанавливаем пароль пользователя root (не забудьте его : ), можем разрешить (лучше не надо) доступ пользователя root с удаленной машины. Так же можем создать анонимный аккаунт, хотя нам этого делать не рекомендуют. Ну мы и не будем.

ВСЕ! Жмем Next, в следующем окне - Execute: и мы получаем настроенный MySQL сервер.

Рисунок 14
Чтобы проверить, все ли мы сделали правильно - набираем в командной строке:
mysqladmin --pipe -uroot -p version status proc

и вводим по запросу пароль. Отмечу одну тонкость. Если вы делали все в точности как я, вам придется использовать еще одну опцию при запуске утилиты mysqladmin, а именно - опцию --pipe. Дело в том, что по умолчанию MySQL использует TCP/IP, а мы, если помните, его отключили, поскольку используем MySQL исключительно локально. Поэтому при подключении к базе нам надо явно, опцией --pipe, указать, что мы используем именованные каналы, следующим образом:

mysqladmin --pipe -uroot -p version status proc

Мы должны получить нечто следующее:

C:\Documents and Settings\Asus>mysqladmin  -uroot -p version status proc
Enter password: *******
mysqladmin  Ver 8.41 Distrib 5.0.18, for Win32 on ia32
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          5.0.18-nt
Protocol version        10
Connection              localhost via TCP/IP
TCP port                3306
Uptime:                 24 sec

Threads: 1  Questions: 1  Slow queries: 0  Opens: 0  Flush tables: 1  Open table
s: 6  Queries per second avg: 0.042
Uptime: 24  Threads: 1  Questions: 1  Slow queries: 0  Opens: 0  Flush tables: 1
  Open tables: 6  Queries per second avg: 0.042
+----+------+----------------+----+---------+------+-------+------------------+
| Id | User | Host           | db | Command | Time | State | Info             |
+----+------+----------------+----+---------+------+-------+------------------+
| 1  | root | localhost:1222 |    | Query   | 0    |       | show processlist |
+----+------+----------------+----+---------+------+-------+------------------+

Новых пользователей можно добавлять, используя команду 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;


Далее я создаю суперпользователя lik и БД,где будет расположен пример(хотя это можно сделать только что созданым пользователем)

Рисунок 15
Вхожу только что созданным пользователем(это видно по заголовку на скрине)
Рисунок 16
Cоздаю таблицу,вставляю данные.
Рисунок 17
Выполнил sql-запрос,результат на скрине
Рисунок 18


Hosted by uCoz