MySQL - установка и базовая настройка

Версия для печатиОтправить другуPDF version

MySQL

Пора заняться установкой MySQL-сервера, поскольку много чего будем хранить именно в этой базе данных.

Список необходимых опций сборки добавим в /etc/make.conf:

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

# Oпции для сборки клиента
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql55-client

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

# Коллэйшн или сравнение.
WITH_COLLATION=cp1251_bin

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

.endif

# Oпции для сборки сервера
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql55-server

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

# Какие кодировки компилить еще.
WITH_XCHARSET=all

# Кодировка коллэйшн.
WITH_COLLATION=cp1251_bin

# Вкомпилить ли SSL. Есть смысл, если к MySQL-серверу
# разрешены коннекты откуда либо, кроме как с локалхоста.
WITHOUT_OPENSSL=yes

# Если следующую опцию поставить в yes, то MySQL будет работать
# в несколько потоков (только для i386)
WITH_LINUXTHREADS=yes

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

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

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

.endif

Приступаем непосредственно к инсталляции серверной части (клиентскую часть подтянет автоматически).

# cd /usr/ports/databases/mysql55-server
# make install clean
# rehash

Добавляем в /etc/rc.conf строку о необходимости запуска MySQL-сервера:

# echo '# MySQL' >> /etc/rc.conf
# echo 'mysql_enable="YES"' >> /etc/rc.conf

Запускаем сервер

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

Меняем пароль для пользователя root в MySQL (хотя, обычно, завожу пользователя с полными привилегиями, а запись пользователя root удаляю полностью):

# mysqladmin -u root password new_passwd_here

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

# cp /usr/local/share/mysql/my-medium.cnf /var/db/mysql/my.cnf

Для решения проблем с кодировкой кирилицы, добавим в секцию [client]:

default-character-set=cp1251

И, соответственно, в секцию [mysqld]:

character-set-server = cp1251
collation-server = cp1251_general_ci
init-connect="SET NAMES cp1251"
skip-character-set-client-handshake
skip-name-resolve

Также, для удобства, можете изменить параметры логгирования. Для этого в секцию [mysqld] файла /var/db/mysql/my.cnf добавляем строку log=/var/log/mysql.log

Также необходимо создать сам файл логов:

# touch /var/log/mysql.log
# chown mysql:mysql /var/log/mysql.log

Перегружаем MySQL для того, чтобы новые настройки вступили в силу:

# sh /usr/local/etc/rc.d/mysql-server restart

Кстати... Если уж возьметесь писать логи MySQL - ОБЯЗАТЕЛЬНО настройте ротацию логов, а не то лог-файл очень скоро разрастется до неимоверных размеров (вплоть до того, что не останется свободного места на разделе. Например, будем архивировать лог раз в неделю. Для этого в /etc/newsyslog.conf необходимо добавить следующую строку:

/var/log/mysql.log      mysql:mysql     600  2     *    $W6D0   JB     /var/db/mysql/hostname.pid

Обратите внимание: pid-файл будет уникальный (зависит от от имени сервера).

Дальше создадим пользователя, с правами суперпользователя в БД MySQL:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'user_pass' WITH GRANT OPTION;

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

# mysql -u username -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.84-log FreeBSD port: mysql-server-5.0.84

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> DELETE FROM user WHERE NOT user='username';
Query OK, 4 rows affected (0.00 sec)

mysql> quit

Базовая настройка MySQL-сервера завершена.
 

Ваша оценка: Нет Средняя: 4.8 (12 голосов)

Вставай, Україно!

Литература