|
|||
|
Установка и настройка MySQL в FreeBSDСодержание
Что нового в MySQL 5.6В феврале 2013 года Oracle анонсировала новый релиз MySQL 5.6, в котором содержатся весьма интересные обновления, в основном коснувшиеся таблиц InnoDB, такие как поддержка средств полнотекстового поиска в таблицах InnoDB, повышенная производительность при интенсивной записи данных, доступ к данным через memcached API и другое. С полным списком изменений можно ознакомиться тут: Установка MySQL 5.6 в FreeBSD, обычно, проходит гладко, а вот обновление, наоборот, таит в себе множество скрытых проблем (MySQL - установка и настройка в Windows). Все описанные в статье примеры протестированы на FreeBSD 8.4. Установка MySQL 5.6 в FreeBSDОбычно MySQL в FreeBSD устанавливают из портов, но если на сервере используется DirectAdmin, то при помощи скриптов обновления программ custombuild (/usr/local/directadmin/custombuild). Перед установкой, желательно обновить дерево портов, как это сделать описано тут: работа с портами в FreeBSD, при использовании DA, нужно перенастроить /usr/local/directadmin/custombuild/options.conf и обновить скрипты установки MySQL командой ./build update. Предварительно можно настроить параметры устанавливаемой базы данных в файле /etc/make.conf, но это не обязательно. Об обновлении более старых версий БД до MySQL 5.6 написано ниже. В DirectAdmin MySQL устанавливается при установке панели DA и требуется не установка с нуля, а обновление, процесс которого описан в разделе "Обновление MySQL". Уствновка MySQL 5.6 из портов FreeBSD
Переход в директорию с портами баз данных # cd /usr/ports/databases/ Выбрать версию MySQL из доступных # find . -name 'mysql*-server' ./mysql56-server ./mysql50-server ./mysql51-server ./mysql55-server ./mysql41-server Переход в директорию с портом MySQL srver 5.6 # cd /usr/ports/databases/mysql56-server Установить mysql56-server # make install clean Обновление путей #rehash Скопировать главный конфигурационный файл MySQL # cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf Создать фалы баз данных по умолчанию (необходимы для работы сервера MySQL) # cp /usr/local/mysql/scripts/mysql_install_db /usr/local/mysql/mysql_install_db # /usr/local/mysql/mysql_install_db Установить права доступа к каталогу баз данных MySQL # chown -R mysql:mysql /var/db/mysql Добавить автоматический запуск MySQL в FreeBSD # echo 'mysql_enable="YES"' >> /etc/rc.conf Запуск MySQL сервера # /usr/local/etc/rc.d/mysql-server start Установка пароля для root в MySQL # mysqladmin -u root password 'НОВЫЙ ПАРОЛЬ для root' Подключение в БД # mysql -u root -p Enter password:НОВЫЙ ПАРОЛЬ для root Переход в конфигурационную БД MySQL mysql>use mysql Удаление всех лишних пользователей, чтобы остался только 1 root с новым, только что установленным паролем mysql>DELETE FROM user WHERE user != 'root'; На этом первичная настройка и установка MySQL 5.6 завершена. Если в процессе установки появились ошибки или сервер MySQL не запустился, смотрите раздел "Полезные сведения по MySQL", который размещен в этой статье ниже. Обновление MySQLПеред обновлением до версии MySQL 5.6 в FreeBSD нужно обязательно создать резервную копию всех баз данных. Это можно сделать множеством способов, например просто переместив директорию с базами (пути указаны в разделе "Полезные сведения по MySQL" ниже) в свой домашний каталог, предварительно остановив сервер базы данных. В DirectAdmin есть способ настроить обновление так, чтобы перед ним автоматически сохранялась резервная копия БД - за это отвечают две директивы в /usr/local/directadmin/custombuild/option.conf: mysql_backup=yes, mysql_backup_dir=/usr/local/directadmin/custombuild/mysql_backups. Сам процесс обновления сводится к удалению порта старой версии MySQL и установкой новой. Процесс установки подробно описан в разделе этой статьи "Установка MySQL 5.6 в FreeBSD". Удаление старой версии MySQL, установленной из портов
# cd /usr/ports/databases/mysql50-server/ # make deinstall # cd /usr/ports/databases/mysql50-client/ # make deinstall После успешной установки новой версии, в случае необходимости, нужно вернуть директории, содержащие данные таблиц MySQL из старой версии (сервер MySQL на это время нужно остановить). Ни в коем случае, не стоит возвращать в директорию с файлами новой версии MySQL файлы из корневой директории, такие как: ib_logfile0, ib_logfile1 и др. После возврата таблиц нужно запустить утилиту mysql_upgrade, которая приведет системную таблицу "mysql" в соответствие с новой версией сервера MySQL (например в версии 5.5 добавлены новые колонки в системных таблицах, по отношению к версии 5.1, структуры таблиц 5.5 и 5.6 также, отличаются) и запустить MySQL-сервер. Если не запустить mysql_upgrade, то например при обновлении версии 5.1 до 5.5 сервер базы данных работать будет, но запрос GRANT ALL PRIVILEGES ON *.* TO 'superuser'@'localhost' WITH GRANT OPTION; завершится ошибкой Access denied for user 'root'@'localhost' (using password: YES) из-за того, что служебные таблицы MySQL не содержат необходимых колонок. Также, возможны и другие не заметные на первый взгляд ошибки при работе с БД. При использовании DA обновление проводится командой /usr/local/directadmin/custombuild/build mysql d. При этом также, как и при обновлении из портов, нужно сначала очистить или перенести каталог /home/mysql/, запустить новую версию и убедиться, что она работает, а уже после этого возвращать данные в БД. После обновления MySQL нужно обновить скрипты, используемые для подключения к БД в PHP. Пользователям DA можно просто обновить php в целом: /usr/local/directadmin/custombuild/build php d. MySQL в FreeBSD - база знанийСкрипты запуска/останова MySQL: # /usr/local/etc/rc.d/mysql-server start # /usr/local/etc/rc.d/mysql-server stop В DA названия скриптов запуска и останова MySQL отличаются: /usr/local/etc/rc.d/mysqld start /usr/local/etc/rc.d/mysqld stop Посмотреть, запущен ли mysqd: # ps ax | grep mysql Лог-файл MySQL-сервера по умолчанию располагается тут: /var/db/mysql/HOSTNAME.err, DirectAdmin изменяет путь к логу на /home/mysql/HOSTNAME.err. HOSTNAME - hostname сервера, на котором установлен MySQL. Настроить место хранения лога запросов и лога медленных запросов можно при помощи директивы log-output в my.cnf. Если указать log-output=TABLE, тогда эти логи будут храниться в БД с именем "mysql" и соответствующих таблицах: general_log и slow_log. Включить и отключить главный лог MySQL, в который будут записываться абсолютно все запросы к БД можно не перезагружая сервер: SET GLOBAL general_log = 'ON'; SET GLOBAL general_log = 'OFF'; Следует учитывать, что на сервере под нагрузкой лог запросов MySQL будет очень быстро разростаться, поэтому оставлять его включенным на долго не стоит. Путь к базам данных: /var/db/mysql/ (DirectAdmin - /home/mysql/). Путь к конфигурационному файлу MySQL my.cnf: /etc/my.cnf. Добавить пользователя с полным доступом: CREATE USER 'superuser'@'localhost' IDENTIFIED BY 'PASS'; GRANT ALL PRIVILEGES ON *.* TO 'superuser'@'localhost' WITH GRANT OPTION; # PASS - нужно заменить на пароль для пользователя superuser # Доступ у пользователя superuser будет только с локального компьютера # Чтобы открыть доступ для superuser из сети, нужно добавить нового пользователя # и заменить localhost на % Изменить/восстановить пароль root в MySQL не имея ученой записи с ALL PRIVILEGES: # mysqladmin -u root password 'Новый пароль' Для смены root пароля можно использовать и другой способ: запустить MySQL с опцией, запрещающей проверку прав доступа, зайти под root без пароля и сменить пароль SQL запросом (пример для БД установленной Директадмином, но его легко можно изменить, используя материалы этого раздела и для MySQL установленного из портов): # /usr/local/etc/rc.d/mysqld stop # cd /usr/local/mysql/bin/ # ./mysqld_safe --skip-grant-tables & # mysql -uroot use mysql UPDATE user SET password=PASSWORD('НОВЫЙ ПАРОЛЬ') WHERE user='root'; FLUSH PRIVILEGES; quit Теперь находим номера PID процессов MySQL # ps ax | grep mysql 69349 1 I 0:00.01 /bin/sh ./mysqld_safe --skip-grant-tables 69583 1 I 0:00.09 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local 69787 1 S+ 0:00.00 grep mysql Далее первым нужно остановить процесс ./mysqld_safe --skip-grant-tables, потом /usr/local/mysql/bin/mysqld # kill -9 69349 # kill -9 69583 Номера процессов в Вашей системе будут отличаться! Если остановить вначале не тот процесс - /usr/local/mysql/bin/mysqld, то он не остановится, а просто перезапустится, и так будет до бесконечности, пока не будет остановлен процесс ./mysqld_safe --skip-grant-tables. Директория с установленным MySQL: /usr/local/mysql/. Если база данных была установлена при помощи DirectAdmin, то /usr/local/mysql будет символической ссылкой на директорию в /usr/local/, например для MySQL 5.6 это может быть ссылка на /usr/local/mysql-5.6.10-freebsd8.4-x86_64. Ошибки MySQL и их решенияCan't start server : Bind on unix socket: Permission deniedMySQL запускается, работает несколько секунд и останавливается. В логе MySQL обнаружены строки с такими ошибками: [ERROR] Can't start server : Bind on unix socket: Permission denied [ERROR] Do you already have another mysqld server running on socket: /tmp/mysql.sock ? [ERROR] Aborting Сообщения об ошибке сообщают, что доступ сокету MySQL запрещен. Чтобы открыть доступ, необходимо сменить права на каталог /tmp: # chmod chmod 1777 /tmp Посмотреть изменения # ls -ld /tmp drwxrwxrwt root wheel 512 /tmp Такая ошибка может возникнуть после переноса FreeBSD с одного HDD на другой. Обычно, при таком переносе, директория /tmp не копируется, и при монтировании ее в новой системе забывают настроить права доступа. Как остановить mysqld_safe?Чтобы остановить mysqld_safe нужно найти PID скрипта, запустившего mysql, а уже потом остановить процесс MySQL, иначе по команде kill -9 PID процесс будет не остановлен, а перезагружен, и так до бесконечности. Описание процесса останова mysqld_safe находится в разделе "Полезные сведения по MySQL" и подразделе "Изменить/восстановить пароль root в MySQL". Опубликовано: 2013/07/18
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/freebsd.php?txt=175" target="_blank">Установка и настройка MySQL в FreeBSD</a> 24688
Добавить комментарий
|