пятница, 15 августа 2008 г.

MySQL

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



...
мускуль:
ставим из портов:


~> cd /usr/ports/databases/mysql50-server
~> make && make install && make clean
после установки меняем права на директорию:
~> chown -R mysql:mysql /var/db/mysql
~>cgrp -R /var/db/mysql

главный конфиг - файл my.cnf (у некоторых - my.cfg). валяться он должен в тех местах, где мускуль его может найтить
/etc/my.cnf/var/db/mysql/my.cnf/usr/local/etc/my.cnfу меня - /usr/local/etcсоппсно файл (взят на lissyara.su из статьи самого лисяры )
# Этот конфигурационный файл сделан на основе файла для маленьких# систем - /usr/local/share/mysql/my-small.cnf. Большую часть его# делал не я, а один знакомый. Имени, к сожалению, не помню...# Но всё же предупреждаю - копирайт на настройки конфига не мой :))## Вообще, конфигурационный файл можно положить в несколько мест:# /etc/my.cnf# /var/db/mysql/my.cnf# /usr/local/etc/my.cnf# В любом из них mysqld его найдёт, и достанет из него настройки.# Самое корректное место, если судить по стартовому скрипту, это# директория где лежат базы данных - /var/db/mysql/my.cnf.# Опции для всех клиентов MySQL[client]# Пароль для подключения к БД#password = passw# Порт на котором висит MySQLport = 3306# Сокет MySQLsocket = /usr/home/DB/mysql.sock# Опции MySQL-сервера[mysqld]# Портport = 3306# Адрес, который будем слушать (если вам не нужно подключаться к# MySQL с других машин, то оставьте здесь 127.0.0.1)bind-address = 127.0.0.1# Где лежит сокетsocket = /usr/home/DB/mysql.sock# Не использовать средства системных блокировок.skip-locking# Вообще, в новых версиях, (после 3.21) этот пункт правильно называется# key_buffer_size, но можно использовать и старое имя. Значение этого# пункта - размер буфера, используемого для блоков индексов. Чтобы# улучшить обработку индексов (для всех операций чтения и записи нескольких# элементов), необходимо увеличить это значение настолько, насколько возможно.# Рекомендуется, 1/4 от объёма оперативки, но не более 1/2 - иначе система# может начать сохранять временные файлы на диске, что значительно# снизит производительность.key_buffer = 16K# Максимальный размер одного пакета. Изначально размер буфера сообщений# устанавливается в net_buffer_length байтов, но при необходимости может# возрасти до max_allowed_packet байтов. Это значение по умолчанию не# настолько велико, чтобы отсеивать большие (возможно ошибочные) пакеты.# Если используются большие столбцы BLOB, его необходимо увеличить.# Значение должно быть не меньше самого большого BLOB, который будет# использоваться. Ограничение протокола для max_allowed_packet# составляет 16 Мб в MySQL 3.23 и 1Гб в MySQL 4.0.max_allowed_packet = 1M# Количество открытых таблиц для всех потоков. С увеличением этого# значения увеличивается количество дескрипторов файлов, необходимых# для mysqld. Чтобы узнать, необходимо ли изменять значение кэша таблиц,# следует проверить значение переменной Opened_tables.# Если у этой переменной большое значение, а команда FLUSH TABLES# (которая закрывает все таблицы, а потом открывает их повторно)# используется не часто, то необходимо увеличить ее значение.table_cache = 4# Каждый поток, которому необходимо произвести сортировку, выделяет# буфер данного размера. Увеличение данного значения позволит ускорить# выполнение операторов ORDER BY или GROUP BY.sort_buffer_size = 64K# Каждый поток, осуществляющий последовательное сканирование, выделяет# буфер указанного размера для каждой сканируемой таблицы. Если# проводится много последовательных сканирований, это значение# можно увеличить.read_buffer_size = 256K# При считывании строк, после проведения сортировки, в отсортированном# порядке строки считываются через буфер, чтобы избежать операций поиска# по диску. Это может улучшить выполнение ORDER BY весьма и весьма,# если параметр установлен в большое значение. Т.к. эта переменная# имеет отношение к потоку, то не устанавливайте слишком большое# значение глобально, но просто меняйте его при выполнении некоторых# больших запросов.read_rnd_buffer_size = 256K# В данное значение устанавливается, в промежутках между запросами,# буфер соединения. Обычно это значение не изменяется, но если у вас# очень мало памяти, можно установить его по размеру ожидаемого# запроса (т.е. равным предполагаемой длине операторов SQL, отправляемых# клиентами; если оператор превысит указанную длину, буфер будет# автоматически увеличен как максимум до max_allowed_packet байтов).net_buffer_length = 2K# Размер стека для каждого потока. От данного значения зависит большое# количество ограничений, обнаруживаемых при помощи теста crash-me.# По умолчанию этот размер достаточен для нормальной работы.thread_stack = 64K# Вообще не слушать порты TCP/IP. Это может применяться для большей# безопасности, если все процессы, соединяющиеся с MySQL висят на томже# хосте, что и mysqld. Все взаимодействия с mysqld будут осуществляться# через Unix-сокеты, или именованые каналы.# Заметтьте, что использование этой опции под форточками, без включчения# именованных каналов (используйте опцию "enable-named-pipe") сделает# работу MySQL бесполезной - ибо с mysqld никто не сможет соединиться :)skip-networking# Если Вы используете InnoDB, то закомментируйте эту опциюskip-innodb# С этой опцией MySQL не будет инициализировать библиотеку Berkeley DB,# что позволит сэкономить большое количество памяти.skip-bdb# Hекоторое уникальное число между 2 и 2^32-1. Значения server-id должны# быть различными на каждом сервере, участвующем в репликации. Если# значение server-id не определено, оно будет установлено в 1, если# также не определено значение master-host, оно будет установлено в 2.# Обратите внимание, что если значение server-id опущено, то головной# сервер будет отказывать в соединении всем подчиненным серверам, а# подчиненный сервер - отказывать в соединении головному серверу.# Таким образом, опускать установку значения server-id можно лишь в# случае резервного копирования с использованием двоичного журнала.server-id = 1# Раскомментируйте эту опцию, для включения логгирования всех запросов# Заметтьте - тока на время отладки! Потом надо закомментить и# рестартануть MySQL!# Файл должен существовать, с соответствующими правами на него:# touch /var/log/mysql.log# chown mysql:wheel /var/log/mysql.log# chmod 640 /var/log/mysql.loglog = /var/log/mysql.log# Указывает местоположение двоичного журнала обновлений,# в котором будут вестись записи.#log-bin=mysql-bin[mysqldump]# Если задан этот параметр, то обработчик таблицы при выполнении# удаления не будет объединять индексы - в некоторых случаях это# может ускорить данную операциюquick# Максимальная величина пакета, посылаемого/принимаемого с сервераmax_allowed_packet = 16M[mysql]# Отключает автоматическое рехеширование. rehash следует использовать# для получения хеша таблиц и полей. Это обеспечивает более# быстрый старт mysql.no-auto-rehash# Опция, которую рекомендуется раскомментить начинающим :)# Разрешает выполнять только операции UPDATE и DELETE, используя ключи.#safe-updates[isamchk]key_buffer = 8Msort_buffer_size = 8M[myisamchk]key_buffer = 8Msort_buffer_size = 8M[mysqlhotcopy]# Допускать простой длительностью interactive_timeout секунд (вместо# wait_timeout секунд) перед закрытием данного соединения.interactive-timeout# P.S. Большинство текста - это из мануала по MySQL 4.0, за который# мы не так давно воевали на www.mysql.com (его убирали на некоторое# время, типа он по старой версии, потому не актуален...# но - отвоевали, вернули :))))

запускаем
/usr/local/bin/mysql_install_db --user=mysql

cd /usr/local ; /usr/local/bin/mysql_safe &

после инсталляции меняем пароль рута:
/usr/local/bin/mysqladmin -u root password 'new_passw'
иначе получим следующее:
~> mysql -u root -p
Enter password:
su: sorry
~>
по дефолту рутовый пароль пустой. но без него не пущает!))))

после всего заходим в мускуль:

~> mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.51a-log FreeBSD port: mysql-server-5.0.51a

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

mysql>

громко орем "ЙЙЙЙЕЕЕЕСССС!!!", успокаиваемся и создаем админа баз.

все это безобразие делалось по статье "Установка MySQL"