DTop CMS - система управления контентом
Текущая версия: 3.4.1


© 2002-2018

Статья опубликована: 2011.07.09
Последние изменения: 2013.09.29

FreeBSD, установка и настройка MySQL сервера версии 5.5


На этой страничке описано как установить и настроить MySQL сервер версии 5.5 на сервере под управлением FreeBSD.

Внимание! Версия 5.5 уже не является последней, поэтому рекомендую устанавливать версию 5.6. Установка MySQL сервера 5.6 на FreeBSD
  • Особенности реализации

    - отключенная сетевая подсистема, работа с сервером через сокет;
    - использование InnoDB для системных таблиц.
    - следим за "медленными" запросами.

  • MySQL

    Официальный сайт MySQL


  • Использованные версии ПО:
    # uname -sr
    FreeBSD 9.1-RELEASE
    
    # pkg_info | grep mysql
    mysql-client-5.5.30 Multithreaded SQL database (client)
    mysql-server-5.5.30 Multithreaded SQL database (server)
    

  • Предварительная подготовка
    Проверяем наличие или добавляем строки в /etc/make.conf:
    PORTSDIR?=/usr/ports
    
    .if ${.CURDIR} == ${PORTSDIR}/databases/mysql55-server
    WITH_PROC_SCOPE_PTH=yes
    BUILD_OPTIMIZED=yes
    BUILD_STATIC=yes
    .endif
    .if ${.CURDIR} == ${PORTSDIR}/databases/mysql55-client
    WITH_PROC_SCOPE_PTH=yes
    BUILD_OPTIMIZED=yes
    BUILD_STATIC=yes
    .endif
    

  • Установка
    # cd /usr/ports/databases/mysql55-server
    # make install clean
    

  • Настройка
    Проверяем наличие или добавляем строку в /etc/rc.conf:
    mysql_enable="YES"
    
    Создаем конфигурационный файл /var/db/mysql/my.cnf с настройками
    # cd /var/db/mysql
    # touch my.cnf
    # chown mysql:mysql my.cnf
    # chmod 0660 my.cnf
    
    Записываем в /var/db/mysql/my.cnf настройки:
    [mysqld]
    skip-networking
    character-set-server=utf8
    init-connect="SET NAMES utf8"
    query_cache_size=64M
    long_query_time=5
    slow_query_log=1
    slow_query_log_file=/var/db/mysql/slow.log
    
    [client]
    character_set_client=utf8
    
    Описание настроек:
    • skip-networking - отключаем сетевую подсистему, доступ к серверу в этом случае возможен только через сокет
    • character-set-server=utf8, init-connect="SET NAMES utf8" - задаем использование сервером кодировки utf8
    • character_set_client=utf8 - задаем использование клиентом кодировки utf8
    • long_query_time=5
      slow_query_log=1
      slow_query_log_file=/var/db/mysql/slow.log
      эти директивы задают слежение за медленными запросами. Медленным в данном случае считаются запросы, выполняющиеся больше 5 секунд. slow_query_log и slow_query_log_file пришли на замену директиве log-slow-queries

    Тем, кто хочет остаться на MYISAM, необходимо в секцию [mysqld] добавить строки:
    skip-innodb
    default-storage-engine=MYISAM
    
    Создаем начальные базы данных:
    # cd /usr/local
    # ./bin/mysql_install_db
    # chown -R mysql:mysql /var/db/mysql
    

    Запускаем MySQL сервер
    # /usr/local/etc/rc.d/mysql-server start
    
    Проверяем что сервер запустился и работает
    # ps ax | grep mysql
    2132  ??  Is     0:00.01 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --data
     2333  ??  I      0:00.08 /usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf --basedir=/usr/local --datad
    
    Выполняем скрипт который удаляет тестовую базу, гостевой аккаунт и делает ещё некоторую оптимизацию для повышения безопасности (данный скрипт можно выполнить в любое время позже):
    # mysql_secure_installation
    
    Или просто задаем пароль root для mysql-сервера
    # /usr/local/bin/mysqladmin -uroot password "ПАРОЛЬ"
    
    Пробуем подключиться:
    # mysql -uroot -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 1
    Server version: 5.5.13 Source distribution
    
    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql> quit
    Bye
    

  • Подключение к MySQL серверу через сокет
    - вместо хоста необходимо задать localhost;
    - вместо порта пишем сокет /tmp/mysql.sock;
    - остальные параметры такие же как и при подключении через хост:порт.

    Пример на языке Perl через DBI интерфейс
    use DBI;
    
    $database = 'newbase';
    $host = 'localhost';
    $port = '/tmp/mysql.sock';
    $user = 'mysqluser';
    $pass = 'mysqlpassword';
    
    $dbh = DBI->connect(
    	"DBI:mysql:$database:$host:$port",
    	$user,
    	$pass
    );
    
    $dbh->disconnect;