Корень зла ANDREY MATVEEV Спецвыпуск: Хакер, номер #069, стр. 069-050-2 # cd /usr/ports/databases/mysql # make package Для проверки правильности сборки выполняем набор прилагаемых тестов: # make do-regress Если все тесты прошли успешно, переходим к установке прекомпилированного пакета клиентской части MySQL: # pkg_add /usr/ports/packages/i386/all/mysql-client-5.0.22.tgz Уделяем внимание зависимостям mysql-server'а: # cd /usr/ports/databases/p5-DBD-mysql # make install clean CLEANDEPENDS=Yes И устанавливаем пакадж серверной части MySQL: # pkg_add /usr/ports/packages/i386/all/mysql-server-5.0.22.tgz При необходимости создаем директорию /var/mysql: # mkdir -p /var/mysql # chown _mysql:_mysql /var/mysql Настало время проверить работоспособность БД и запустить скрипт для создания типовых баз mysql и test: # /usr/local/bin/mysql_install_db Теперь в стартовом сценарии /etc/rc.local указываем опции для mysqld_safe - своего рода обертки, которая запускает mysqld с заданными параметрами, производит мониторинг состояния демона и при необходимости перезапускает главный процесс MySQL. # vi /etc/rc.local if [ -x /usr/local/bin/mysqld_safe ]; then echo -n ' mysqld' /usr/local/bin/mysqld_safe --user=_mysql \ --open-files=1000 --skip-networking \ --socket=/var/www/var/run/mysql/mysql.sock & fi Прокомментирую опции, которые мы указали при старте MySQL: - --USER=_MYSQL - ЗАПУСК ДЕМОНА ОТ ИМЕНИ НЕПРИВИЛЕГИРОВАННОГО ПОЛЬЗОВАТЕЛЯ _MYSQL; - --OPEN-FILES=1000 - МАКСИМАЛЬНОЕ ЧИСЛО ОТКРЫТЫХ ФАЙЛОВ; - --SKIP-NETWORKING - MYSQLD НЕ ДОЛЖЕН БИНДИТЬСЯ НА СЕТЕВЫЕ АДРЕСА; - --SOCKET=/VAR/WWW/VAR/RUN/MYSQL/MYSQL.SOCK - ТАК КАК НАША БД БУДЕТ ИСПОЛЬЗОВАТЬСЯ ТОЛЬКО ЛОКАЛЬНО УСТАНОВЛЕННЫМИ ПРОГРАММАМИ, РАБОТАЕМ ЧЕРЕЗ СОКЕТ; - '&' - ВЫПОЛНЯЕМ ПЕРЕВОД MYSQLD_SAFE В ФОНОВЫЙ РЕЖИМ. Чтобы не изобретать велосипед, давай возьмем предлагаемый разработчиками пример конфига MySQL, назначим ему корректные права доступа и отредактируем применительно к нашим задачам: # cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf # chmod 644 /etc/my.cnf # vi /etc/my.cnf [client] socket = /var/www/var/run/mysql/mysql.sock [mysqld] socket = /var/www/var/run/mysql/mysql.sock skip-locking key_buffer = 16M max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K myisam_sort_buffer_size = 8M [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash Как ты мог заметить, главное отличие от дефолтного my-medium.cnf заключается в определении местоположения абсолютного пути до сокета клиента и сервера MySQL. Вместо /var/run/mysql/mysql.sock мы будем использовать /var/www/var/run/mysql/mysql.sock, поэтому своевременно подготавливаем соответствующую поддиректорию: # mkdir -p /var/www/var/run/mysql # chown _mysql:_mysql /var/www/var/run/mysql Для хранения временных файлов необходимо создать каталог /var/www/tmp с либеральными правами доступа: # mkdir -p -m 777 /var/www/tmp С установкой и конфигурированием разобрались, переходим к запуску демона на орбиту: # /usr/local/bin/mysqld_safe --user=_mysql --open-files=1000 \ --skip-networking --socket=/var/www/var/run/mysql/mysql.sock & Проверяем, готов ли mysqld принимать входящие подключения: |