Переход к предыдущей публикации Установка eAccelerator для работы с PHP5 [FreeBSD 6.3 & Apache 1.3] Широкоформатный Live Переход к следущей публикации

Устанавливаем MySQL 5.1

Вторник, 26 февраля, 2008 16:05:20 EET

Исправления от 23 марта, 2009 12:56:57

Mysql База данных - это структурированный организованный набор данных, описывающих характеристики какой-либо физической или виртуальной системы. А проще и по-русски, это набор каких-то записей. Так же как можно хранить записи в текстовом файле, также же просто можно хранить их в базе данных, но во втором случае поиск необходимой информации ее и выборка из всего массива заметно упрощается и ускоряется. Базы данных используют во многих отраслях. Построить нормальный веб сайт без использования БД невозможно. Кто-то может возразить, что вместо БД можно в некоторых случаях хранить данные в файлах? Можно, конечно! Но при большой посещаемости такого ресурса Ваши посетители при обращении к сайту будут замечать существенные задержки в работе.

Одним из наиболее известных серверов для организации баз данных (или СУБД - система управления базами данных) является MySQL. Это бесплатная, надежная, открытая СУБД, которая широко используется во всем мире на серверах, предоставляющих услуги хостинга (и не только). Версии MySQL работают и на UNIX подобных системах и на Windows. В основу работы с базами данных положена “клиент-серверная” технология. В случае с MySQL также различают mysql-сервер - основное программное обеспечение для создания и поддержания БД; и mysql-клиент, который предназначен для подключения к mysql-серверу с целью управления им и взаимодействия.

В данной публикации я хочу осветить установку MySQL версии 5.1 на сервере под управлением операционной системы FreeBSD. Пятый мускуль еще мало кто желает ставить. Тем не менее, уже полгода на трех моих машинах запущен и работает именно mysql-5.1 и особого дискомфорта от этого я не ощутил.

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

# make search name="mysql-server-5.1"
Port:   mysql-server-5.1.18
Path:   /usr/ports/databases/mysql51-server
Info:   Multithreaded SQL database (server)
Maint:  ale@FreeBSD.org
B-deps: libtool-1.5.22_4 mysql-client-5.1.18
R-deps: mysql-client-5.1.18
WWW:    http://www.mysql.com/

а это клиент:

# make search name="mysql-client-5.1"
Port:   mysql-client-5.1.18
Path:   /usr/ports/databases/mysql51-client
Info:   Multithreaded SQL database (client)
Maint:  ale@FreeBSD.org
B-deps: libtool-1.5.22_4
R-deps:
WWW:    http://www.mysql.com/

Для сборки будут доступны следущие опции:

# cd /usr/ports/databases/mysql51-server
# make
===>  Vulnerability check disabled, database not found

You may use the following build options:

        WITH_CHARSET=charset    Define the primary built-in charset (latin1).
        WITH_XCHARSET=list      Define other built-in charsets (may be 'all').
        WITH_COLLATION=collate  Define default collation (latin1_swedish_ci).
        WITH_OPENSSL=yes        Enable secure connections.
        WITH_LINUXTHREADS=yes   Use the linuxthreads pthread library.
        WITH_PROC_SCOPE_PTH=yes Use process scope threads
                                (try it if you use libpthread).
        BUILD_OPTIMIZED=yes     Enable compiler optimizations
                                (use it if you need speed).
        BUILD_STATIC=yes        Build a static version of mysqld.
                                (use it if you need even more speed).
        WITH_NDB=yes            Enable support for NDB Cluster.

Их можно добавить в /etc/make.conf для оптимизации будущего MySQL сервера:

# Путь к коллекции портов
PORTSDIR?= /usr/ports
# Версия MySQL сервера
DEFAULT_MYSQL_VER=51

# Указываем опции для сборки клиента
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql51-client

# Кодировка клиента по умолчанию. Если не указываете ничего,
# то используется latin1. Не обязательный параметр, но я
# предпочитаю cp1251.
 WITH_CHARSET=cp1251

# Коллэйшн или сравнение. Вот здесь указывается кодировка
# для него по-умолчанию.
 WITH_COLLATION=cp1251_bin

# В общем, если эта опция действительно хоть что-то
# оптимизирует, то странно что она по дефолту не включена,
# а предлагается опционально. Ну пусть будет.
 BUILD_OPTIMIZED=yes

.endif

# Указываем опции для сборки сервера
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql51-server

# Кодировка сервера по умолчанию. Как и в случае с клиентом.
WITH_CHARSET=cp1251

# Какие кодировки компилить еще. Можно указать список,
# а можно указать все - all
# WITH_XCHARSET=all

# Кодировка коллэйшн. Тоже что и для клиента.
WITH_COLLATION=cp1251_bin

# Вкомпилить ли SSL? Зачем. У меня ни для одного MySQL
# сервера не разрешены коннекты откуда либо, кроме как
# с локалхоста. А перехватывать пароли MySQL на localhost
# для базы данных будет некому. :)
WITHOUT_OPENSSL=yes

# Если следующую опцию поставить в yes, то MySQL будет работать
# в несколько потоков. Я как-то пробовал собрать однажды сервер
# с этой опцией, но в работе он меня не удовлетворил. Прибавки
# в скорости особо не ощутилось, зато в процессах нарисовалось
# несколько десятков mysql демонов. Не нужно оно мне вобщем.
WITHOUT_LINUXTHREADS=yes

# Тоже че-то связано с многопоточностью сервера.
# Чего не знаем - нетрогаем.
#WITH_PROC_SCOPE_PTH=yes

# Как и с сервером, типа "оптимизируемся".
BUILD_OPTIMIZED=yes

# Сборка статического варианта mysql демона.
# Как это, я на самом деле не понял. Догадываюсь, что в своей
# работе статический демон не станет подгружать дополнительные
# библиотеки, потому что уже будет собран с ними же. Но где
# тогда здесь выигрыш в производительности? Хоть с случае с
# динамической версией - будут тратиться определенные ресурсы
# на подгрузку библиотек; хоть в случае со статиком - он будет
# эти библиотеки постоянно "держать в уме"...
# Эту опцию нельзя применять если у Вас WITH_OPENSSL=yes
BUILD_STATIC=yes

# Отключение поддержки INNODB таблиц. Мне это нельзя отключать,
# ибо на данном сервер крутится сайт скрипты которого используют
# INNODB таблицы в базе. Кому не надо, можете отключить.
WITH_INNODB=yes

# Следущая опция - это для тех, кто использует кластера MySQL.
# Мне как-бы тоже не нужно...
WITHOUT_NDB=yes

.endif

После этого собираем mysql сервер и клиент. Когда установка будет закончена в системе будет создан пользователь mysql и группа mysql. Каталогом для хранения баз данных будет являться по умолчанию /var/db/mysql. Проверим на всякий случай права на этот каталог. Они должны позволять пользователю mysql писать в него.

# chmod 700 /var/db/mysql
# chown -R mysql:mysql /var/db/mysql

Теперь следует отредактировать конфигурационный файл mysql, который называется my.cnf. Положить его можно в любую из этих папок: /var/db/mysql/, /etc/, /usr/local/etc/. MySQL при запуске проверит его наличие во всех этих каталогах. Если не найдет - дополнительные какие-либо параметры не воспримет. У меня my.cnf лежит в /etc/. Права на него 600, владелец mysql:mysql.

Вот рабочий пример конфигурации my.cnf на одном из моих серверов.


Эта часть публикации доступна только зарегистрированным посетителям!
Пожалуйста, войдите [Login] или зарегистрируйтесь [Register].

Естественно, это дааалеко не полный набор возможных настроек MySQL. Более подробную информацию можно получить на сайте www.mysql.com А пока что можно понемногу уже переходить к запуску сервера MySQL. Для этого следует добавить в /etc/rc.conf следущую строчку: mysql_enable=”YES”, чтобы иметь возможность запускать mysql стандартным стартовым скриптом. Перед запуском следует создать системные таблицы MySQL:

# /usr/local/bin/mysql_install_db
...
# /usr/local/etc/rc.d/mysql-server start

Запустился? Проверим:

# sockstat | grep mysqld
mysql    mysqld     71348 10 tcp4   127.0.0.1:3306        *:*
mysql    mysqld     71348 12 stream /tmp/mysql.sock

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

$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.23-rc FreeBSD port: mysql-server-5.1.23

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mysql;
mysql> DELETE FROM user \
WHERE NOT (user='root' and host='localhost');
mysql> UPDATE user SET Password = PASSWORD('0r3ey1rtgrf0') \
WHERE (user='root' and host='localhost');
mysql> quit

Вот и все настройки. Для новичков которые абсолютно ничего не понимают в SQL я бы порекомендовал для работы MySQL фронтенд по имени Navicat MySQL. Только не советую никому привыкать к ним (как это было со мной), потому что многие вещи бывает гораздо быстрее выполнить из командной строки, чем из клиента. Привыкая к окошечному клиенту отвыкаешь от консоли.

Похожие публикации

Комментариев 21

1 2 3

sEr... 28 января, 2010 12:02:58 EET .:. ID #24528 .:.

mms:
$ ssh user@host -L 3306:localhost:3306> putty.exe user@host -L 3306:localhost:3306

Спасибо, буду знать :)
А как, допустим, поступать если я хочу через Navicat приконектиться к базе. Запускаю из линукса его в Wine

Я думал это как-то фаерволом на сервере уже заворачивается…

1 2 3

Возник вопрос по этой теме, или есть что добавить? Говорите!

  1. Зарегистрированным пользователям вводить защитный код (captcha) не приходится.
  2. Загрузить свою аватарку Вы сможете, зарегистрировавшись на сервисе www.gravatar.com
Публикуя комментарий Вы подтверждаете, что ознакомились c Правилами и принимаете их!
HOMOSAPIENS ONLY! :)