wiki:mysql_setup

avalon / инструкция по настройке MySQL

MySQL используется в качестве хранилища данных по умолчанию до версии 1.0rc2 включительно. Начиная с версии 1.0rc3 (r331) хранилищем по умолчанию является SQLite. Установку MySQL можно произвести как из репозитория (для пакетных дистрибутивов), так и  загрузить с сайта разработчика.

Обычно все настройки MySQL хранятся в конфигурационном файле /etc/my.cnf. Описание настроек системных переменных можно  найти в документации. Далее будут даны только общие рекомендации.

Максимальный размер пакета в конфиге обычно установлен в значение 2M. Практика показала, что данного значения не всегда хватает для работы. Рекомендуется изменить данную настройку, установив больший размер пакета. Например:

[mysqld]
max_allowed_packet = 10M

Avalon хранит данные в таблицах типа InnoDB в кодировке UTF-8. Если нет других ограничений (нет других баз, работающих под управлением данного MySQL сервера, или вы производите его установку и настройку впервые), то имеет смысл установить кодировку сервера по умолчанию в UTF-8:

[mysqld]
character_set_server = utf8
collation_server = utf8_unicode_ci

Про разницу между utf8_unicode_ci и utf8_general_ci можно  прочитать в документации. Если коротко, то utf8_general_ci более быстрый, но менее точный в сравненях.

Так же, имеет смысл увеличить размер пула для InnoDB:

[mysqld]
innodb_buffer_pool_size = 32M
innodb_additional_mem_pool_size = 16M

и включить кэш запросов:

[mysqld]
query_cache_type = 1
query_cache_size = 16M

Данных рекоммендаций, в теории, хватит для нормальной работы с базой сообщений размером в 3-4GB.

Если сервер MySQL работает на том же хосте, где предполагается использовать avalon и не используется для других целей, то, возможно, не имеет смысла заниматься настройкой прав доступа (хотя это и не правильно). В противном же случае, для добавления пользователя необходимо зайти в консоль MySQL:

$ mysql -u root -p

и выполнить запрос вида:

GRANT SELECT, INSERT, UPDATE, DELETE
ON <имя_базы>.*
TO <имя_пользователя>@<хост>
IDENTIFIED BY '<пароль>'
WITH GRANT OPTION;

FLUSH PRIVILEGES;

где:

  • имя базы - предполагаемое имя базы (`avalon` по умолчанию);
  • имя пользователя - логин, с которым пользователь будет авторизоваться на MySQL;
  • хост - имя или ip адрес хоста, с которого разрешено заходить пользователю с логином выше;
  • пароль - пароль пользователя;

Например, если сервер находится на том же хосте, где предполагается пользоваться avalon, то для пользователя vasya с паролем 12345 этот запрос будет выглядеть следующим образом:

GRANT SELECT, INSERT, UPDATE, DELETE
ON `avalon`.*
TO vasya@localhost
IDENTIFIED BY '12345'
WITH GRANT OPTION;

FLUSH PRIVILEGES;