Устанавливаем MySQL 5.1
База данных - это структурированный организованный набор данных, описывающих характеристики какой-либо физической или виртуальной системы. А проще и по-русски, это набор каких-то записей. Так же как можно хранить записи в текстовом файле, также же просто можно хранить их в базе данных, но во втором случае поиск необходимой информации ее и выборка из всего массива заметно упрощается и ускоряется. Базы данных используют во многих отраслях. Построить нормальный веб сайт без использования БД невозможно. Кто-то может возразить, что вместо БД можно в некоторых случаях хранить данные в файлах? Можно, конечно! Но при большой посещаемости такого ресурса Ваши посетители при обращении к сайту будут замечать существенные задержки в работе.
Одним из наиболее известных серверов для организации баз данных (или СУБД - система управления базами данных) является 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 фронтенд по имени . Только не советую никому привыкать к ним (как это было со мной), потому что многие вещи бывает гораздо быстрее выполнить из командной строки, чем из клиента. Привыкая к окошечному клиенту отвыкаешь от консоли.
Похожие публикации
Теги: FreeBSD, my.cnf, mysql, mysqld, sql, unix, база данных, настройка, сервер, установка


Спасибо, буду знать
А как, допустим, поступать если я хочу через Navicat приконектиться к базе. Запускаю из линукса его в Wine
Я думал это как-то фаерволом на сервере уже заворачивается…