Оптимальная настройка MySQL сервера. Установка и первоначальная настройка MySQL в linux

Дефолтные конфигурационные параметры в Mysql рассчитаны на микроскопические базы данных, работающие под малыми нагрузками на скромном железе.

Настройка некоторых параметров может повысить производительность базы данных в сотни раз!

Процесс оптимальной настройки Mysql состоит из двух частей — первоначальная настройка и корректировка параметров во время работы. Корректировка параметров в рабочем режиме во многом зависит от специфики Вашей системы и ее мониторинга. Разберемся с параметрами и рекомендациями по установке их значений.

innodb_buffer_pool_size

Если Вы используете только InnoDB таблицы, устанавливайте это значение максимально возможным для Вашей системы. Буфер InnoDB кеширует и данные и индексы. Поэтому значение этого ключа стоит устанавливать в 70%...80% всей доступной памяти.

Innodb_buffer_pool_size = 24G

# При том, что на нашем сервере 32Гб оперативной памяти

innodb_log_file_size

Эта опция влияет на скорость записи. Она устанавливает размер лога операций (так операции сначала записываются в лог, а потом применяются к данным на диске). Чем больше этот лог, тем быстрее будут работать записи (т.к. их поместится больше в файл лога). Файлов всегда два, а их размер одинаковый. Значением параметра задается размер одного файла:

Innodb_log_file_size = 512M

# Так два файла дадут размер лога в 2x512M = 1G

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

innodb_log_buffer_size

Это размер буфера транзакций, которые не были еще закомичены. Значение этого параметра стоит менять в случаях, если вы используете большие поля вроде BLOB или TEXT.

Innodb_log_buffer_size = 2M

# Значения по умолчанию в 1М должно быть достаточно для большинства случаев

innodb_file_per_table

Если включить эту опцию, Innodb будет сохранять данные всех таблиц в отдельных файлах (вместо одного файла по умолчанию). Прироста в производительности не будет, однако есть ряд преимуществ:

  • При удалении таблиц, диск будет освобождаться. По умолчанию общий файл данных может только расширяться, но не уменьшаться.
  • Использование компрессионного формата таблиц потребует включить этот параметр.
innodb_file_per_table = ON

# С версии 5.6 этот параметр включен по умолчанию

innodb_flush_method

Этот параметр определяет логику сброса данных на диск. В современных системах при использовании RAID и резервных узов, вы будете выбирать между O_DSYNC и O_DIRECT :

Innodb_flush_method = O_DSYNC

# Помните об обязательном использовании резервных узлов (например, реплик)

innodb_flush_log_at_trx_commit

Изменение этого параметра может повысить пропускную способность записи данных в базу в сотни раз. Он определяет, будет ли Mysql сбрасывать каждую операцию на диск (в файл лога).

Тут следует руководствоваться такой логикой:

  • innodb_flush_log_at_trx_commit = 1 для случаев, когда сохранность данных — это приоритет номер один.
  • innodb_flush_log_at_trx_commit = 2 для случаев, когда небольшая потеря данных не критична (например, вы используете дублирование и сможете восстановить небольшую потерю). В этом случае транзакции будут сбрасываться в лог на диск только раз в секунду.

Устанавливайте значение на свое усмотрение, однако в большинстве случаев подойдет второй вариант:

Innodb_flush_log_at_trx_commit = 2

# Значительное ускорение записи в базу, однако это потребует механизмов дублирования данных

query_cache_size

Значение этого параметра определяет сколько памяти стоит использовать под кеш запросов. Самый правильный подход — не полагаться на этот механизм. На практике он работает очень неэффективно. Так, весь кеш запросов для определенной таблицы сбрасывается всякий раз, когда в таблицу вносится хотя бы одно изменение. Это может привести к тому, что включение кеширования даже замедлит базу данных:

Query_cache_size = 0

# Однако убедитесь, что используете индексы для обеспечения высокой скорости работы запросов

max_connections

Не следует изменять значение этого параметра на старте. Однако, если вы получаете ошибки "Too many connections" , эту опцию стоит поднимать. Она определяет максимальное количество одновременных соединений с базой данных:

Max_connections = 256

# Поднимайте значение постепенно при появлении ошибок соединений

TL;DR

Настройки по умолчанию скорее всего не подойдут. Поэтому обязательно стоит пройтись по указанным параметрам в статье и подобрать для них значения. Если совсем лень — .

Начиная с версии 3.22 MySQL может считывать принятые по умолчанию параметры запуска для сервера и клиентов из файлов параметров.

В Unix считывание принятых по умолчанию параметров MySQL производится из следующих файлов:

DATADIR является каталогом данных MySQL (обычно /usr/local/mysql/data для бинарной установки или /usr/local/var для установки из исходных текстов). Обратите внимание, что это тот каталог, который был задан во время настройки, а не указанный при помощи --datadir при запуске mysqld ! (--datadir не оказывает влияния на просмотр файлов параметров сервером, так как их просмотр происходит до обработки аргументов командной строки).

В Windows считывание принятых по умолчанию параметров MySQL производится из следующих файлов:

Обратите внимание на то, что в Windows все пути необходимо указывать при помощи / вместо \. Если необходимо использовать \, то его нужно указать дважды, так как \ является знаком перехода в MySQL.

MySQL пытается прочитать файлы параметров в указанном выше порядке. Если существует несколько таких файлов, то параметр, указанный в файле, идущем позже, имеет преимущество над таким же параметром, указанным в файле, расположенном ранее. Параметры, указанные в командной строке, обладают более высоким приоритетом по отношению к параметрам, указанным в любом из файлов параметров. Некоторые параметры можно задавать при помощи переменных окружения. Параметры, указанные в командной строке или в файлах параметров, обладают преимуществом по отношению к переменным окружения (see Приложение F, Переменные окружения ).

Приводим список программ, поддерживающих файлы параметров: mysql , mysqladmin , mysqld , mysqld_safe , mysql.server , mysqldump , mysqlimport , mysqlshow , mysqlcheck , myisamchk и myisampack .

Любой параметр, который может быть задан в командной строке при запуске программы MySQL, может быть также задан в файле параметров (без предваряющего двойного слэша). Чтобы получить список доступных параметров, следует запустить программу с параметром --help .

Файлы параметров могут содержать строки следующего вида:

    Строки комментариев начинаются с символа " # " или " ; ". Пустые строки игнорируются.

    группа представляет собой имя программы или группы, для которой необходимо задать параметры. Любые параметры или строки, задающие значения переменных, которые указаны после строки группы, будут относиться к названной группе, пока не закончится файл параметров или же не будет указана другая строка группы.

    Эквивалент --option в командной строке.

    Эквивалент --option=value в командной строке.

    set-variable = variable=value

    Эквивалент --set-variable variable=value в командной строке. Данный синтаксис необходимо использовать для задания переменных mysqld . Заметьте, --set-variable не используется с MySQL 4.0. Просто используйте --variable=value .

Группа client обеспечивает возможность задавать параметры, относящиеся ко всем клиентам MySQL (кроме самого mysqld). Эта группа великолепно подходит для указания пароля, используемого при подсоединении к серверу (но при этом следует убедиться, что разрешение на чтение и запись этого файла есть только у вас).

Обратите внимание на то, что для параметров и значений все введенные перед ними и после них пробелы автоматически удаляются. В строках значений можно использовать такие экранирующие секвенции: " \b ", " \t ", " \n ", " \r ", " \\ " и " \s " (" \s " - это пробел).

Пример типичного глобального файла параметров:

Port=3306 socket=/tmp/mysql.sock port=3306 socket=/tmp/mysql.sock set-variable = key_buffer_size=16M set-variable = max_allowed_packet=1M quick

Пример типичного файла параметров пользователя:

# Указанный пароль будет направлен всем стандартным клиентам MySQL password=my_password no-auto-rehash set-variable = connect_timeout=2 interactive-timeout

Если у вас дистрибутив исходного кода, то примеры конфигурационных файлов с именами my-xxxx.cnf можно найти в каталоге support-files . В случае бинарного дистрибутива следует обратиться к каталогу DIR/support-files , где DIR - имя каталога установки MySQL (обычно /usr/local/mysql). На данный момент там приведены примеры файлов конфигурации для малых, средних, больших и очень больших систем. Чтобы поэкспериментировать с файлом, можно скопировать my-xxxx.cnf в свой домашний каталог (переименуйте копию в.my.cnf).

Все поддерживающие файлы параметров клиенты MySQL принимают следующие параметры:

Обратите внимание на то, что указанные выше параметры должны идти первыми в командной строке! Однако параметр --print-defaults может использоваться сразу после команд --defaults-xxx-file .

Примечание для разработчиков: обработка файла параметров происходит следующим образом: все совпадающие параметры (т.е. параметры в соответствующих группах) обрабатываются перед любыми аргументами командной строки. Этот алгоритм хорошо подходит для программ, которые в случае, если один и тот же параметр указывается несколько раз, используют последний экземпляр параметра. Если же вы работаете со старой программой, которая считывает заданные несколько раз параметры указанным образом, но не читает файлы параметров, необходимо добавить только две строки, чтобы у нее появилась эта возможность. Чтобы увидеть, как это делается, достаточно ознакомиться с исходным кодом любого стандартного клиента MySQL.


Прямая ссылка: mysql-5.5.23-win32.msi
Скачайте самораспаковывающийся архив "Windows (x86, 32-bit), MSI Installer" и запустите его.

Установка MySQL в картинках

Далее будут показаны те диалоговые окна, в которых необходимо делать какой-либо выбор.

Нажмите в данном окне выборочную установку компонентов "Custom".

Теперь приступим к настройке MySQL сервера.

Выбираем детализированную настройку - "Detailed Configuration".

Отмечаем пункт "Developer Machine". Мы ведь разработчики – правда? :)

Выбрав пункт "Multifunctional Database", вы сможете работать как с таблицами типа InnoDB (с возможностью использования транзакций), так и с высокоскоростной MyISAM (как правило для веб-разработок используется именно этот тип таблиц).

Выбор диска и директории для хранения таблиц типа InnoDB.

В данном диалоговом окне выбирается максимально возможное количество подключений к серверу MySQL. При выборе "Decision Support (DSS)/OLAP", максимальное количество подключений будет ограничено двадцатью, чего более чем достаточно при установке сервера на домашнем компьютере и отсутствии большого количества одновременных подключений.

Отметив "Enable TCP/IP Networking" мы включаем поддержку TCP/IP соединений и выбираем порт, через который они будут осуществляться. Стандартным для сервера MySQL является порт 3306. Отметив "Enable Strict Mode", мы задаем режим строгого соответствия стандарту SQL (данную опцию рекомендуется оставлять включенной).

Обратите внимание на выставление настроек данного окна. Отметив "Manual Selected Default Character Set / Collation" и выбрав из ниспадающего меню "cp1251" определяем, что изначально для таблиц будет использоваться кодировка Cyrillic Windows (cp1251), что означает корректную работу с русским языком в данной кодировке.

Если отметить "Install As Windows Service", сервер будет запускаться в виде сервиса, что является рекомендуемым способом запуска. Ниже, в ниспадающем списке, задается имя сервиса. Далее, уберите галочку рядом с "Launch the MySQL Server automatically" - мы будем запускать сервер вручную. Также поставьте галочку рядом с "Include Bin Directory in Windows PATH" - это позволит установить видимость директории "bin", для командной строки.

Установите пароль пользователя "root". Советую сделать это. Поставьте хотя бы какой-нибудь простенький пароль, только не оставляйте поле пустым, это убережёт вас от возможных неприятностей в дальнейшем.

В данном окне обратите внимание на строку "Write configuration file", которая указывает на месторасположение - "my.ini", далее, его необходимо будет немного отредактировать.


Откройте для редактирования файл "my.ini".
  1. В раздел , после строки:
    port=3306
    Добавьте строку определяющую каталог содержащий файлы описания кодировок:
    character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.5/share/charsets"
  2. В раздел , после строки:
    port=3306
    Добавьте следующие две строки, первая из которых вам уже известна, вторая – устанавливает кодировку в которой данные передаются MySQL:
    character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.5/share/charsets"
    init-connect="SET NAMES cp1251"
  3. Далее, найдите строку:
    default-storage-engine=INNODB
    Замените изначально устанавливаемый тип таблиц на MYISAM:
    default-storage-engine=MYISAM
Сохраните изменения и закройте файл "my.ini".
Установка и настройка сервера MySQL – завершена.

Сегодня мы поговорим с Вами о настройке mysql под linux (unix, freebsd) на VPS/VDS сервере. Я не буду касаться аспектов установки mysql на сервер, благо, в интернете достаточно информации.

Где же хранятся настройки mysql?

На Вашем сервере настройки mysql могут находиться или в /etc/my.cnf , или в /etc/mysql/my.cnf , в крайнем случае используйте команду locate , find или им подобные с заданным именем файла

Как изменить настройки mysql?

Итак, файл найден, открыть его можно непосредственно через mc (midnight commander) + F4 или же используя VI(vim): vi my.cnf .

В случае с mc перед Вами будет старый добрый «Norton Commander», если же Вы не знаете, как пользоваться vi , Вам поможет man vi

Когда требуется настройка mysql? Анализ нагрузки mysql

Подсоединитесь с правами администратора базы данных к консоли mysql или же выполните запрос любым удобным для Вас способом, например через phpmyadmin , запрос:

Show processlist;

Все запросы к mysql для проверки значения (мониторинга) тех или иных параметров необходимо выполнять из под пользователя с правами администратора Вашего mysql сервера.

Итак, если после выполнения этого запроса Вы видите огромную очередь, то уже есть над чем задуматься. Если в очереди находится больше нескольких сотен запросов, точно требуется тонкая настройка mysql.

А также большое значение в колонке Time во времени выполнения этих запросов указывает на возникновение «медленных» запросов. Также показателем к оптимизации mysql может быть вывод команды top , выполненный через linux консоль.

Вводим в консоли Top , после чего на английской раскладке нажимаем «О», зажимаем «shift» и нажимаем «K» до тех пор, пока %CPU не окажется вначале списка. Зажимаем «shift» и «N» и двигаем в начало списка %MEM . После чего нажимаем «Enter».

Если во главе списка у Вас оказывается «mysql» и показатели в столбце %CPU и %MEM довольно существенны (под 100% загрузка на процессор и почти полностью используется память), Вам точно необходима оптимизация mysql.

Тонкая настройка mysql. Кэширование средствами mysql

Перейдем к тюнингу mysql. Откройте файл my.cnf. Найдите раздел mysqld, все последующие переменные мы будем размещать именно в этом разделе, после строки:

Настраиваем кэш MYSQL

Внутренний кэш запросов mysql:

Query_cache_limit – «ограничиться» максимальным размером данных, которые можно поместить в кэш. Скажу Вам по опыту, в очень редких ситуациях «mysql» запросы будут возвращать данные размером больше 10 MB. Обычно и размера в 2-6 MB хватит с головой.

Например, укажите в my.cnf:

Query_cache_limit = 6MB

Query_cache_size – здесь Вы можете указать, сколько памяти выделить для внутреннего кэша запросов «mysql». В кэш будет добавляться результат запроса целиком («таблица», полученная в результате запроса).

Например, укажите в my.cnf:

Query_cache_size = 64M

Выбор значения query_cache_size

Совет первый: не указывайте слишком большое значение query_cache_size . Обычно указывается значение, равное одной десятой, одной пятой от размера доступной физической оперативной памяти.

Совет второй: указание также большого значения может существенно снизить эффективность использования кэша при частом обращении к нему при поиске данных. Тем более, если максимальный размер данных для помещения в кэш ограничен слишком «малым» значением query_cache_limit : поиск среди блоков небольших фрагментированных данных становится гораздо медленнее при большем объеме используемой памяти.

Как оптимально подобрать значения для query_cache_size, query_cache_limit?

После настройки my.cnf и перезапуска mysql (обычно: /etc/init.d/mysql restart, /etc/rc.d/mysql restart ).

Совет: впрочем, перезапускать mysql после изменения my.cnf нет надобности. Достаточно войти в консоль управления mysql с правами администратора или корневого пользователя root и выполнить запрос на изменение тех или иных переменных.

Set @@global.[название] =[новое значение my.cnf];

Например, для query_cache_size:

Set @@global.query_cache_size=64*1024*1024;

Какие mysql запросы не кэшируются (qcache_not_cached)?

  • insert, update запросы, по существу они приводят к очистки кэша таблицы, для которой выполняются;
  • запросы с применением пользовательских функций и процедур;
  • запросы, использующие временные таблицы;
  • запросы с включением локальных переменных;
  • запросы, использующие SELECT … FOR UPDATE, SELECT … INTO OUTFILE, SELECT … IN SHARE MODE, SELECT * FROM … WHERE autoincrement_col IS NULL, SELECT … INTO DUMPFILE;
  • запросы без обращения к таблицам;
  • запросы с включением некоторых недетерминированных функций: SLEEP(), NOW(),CURTIME(), LAST_INSERT_ID(), RAND();
  • в случае, если пользователь имеет права только на часть таблицы: некоторые ее колонки и т.п.
  • запросы с генерацией предупреждений (warnings).

Через сутки – другие зайдите в консоль управления mysql или выполните запрос любым, удобным для вас способом:

SHOW GLOBAL STATUS LIKE "Qcache%"

Здесь нас интересуют следующие переменные:

  • qcache_not_cached – количество запросов, не подлежащих кэшированию;
  • qcache_inserts – показывает количество результатов mysql запросов, добавляемых в кэш;
  • qcache_hits – показывает количество результатов mysql запросов, извлеченных из кэша, без реального обращения к базе данных;
  • qcache_free_memory – показывает свободную «доступную» память для кэширования;
  • qcache_lowmem_prunes – счетчик, который показывает, сколько раз mysql пришлось принудительно освободить память для добавления новых запросов в кэш mysql.

Эффективностью работы кэша является соотношение qcache_inserts к qcache_hits , которое показывает отношение результатов запросов помещенных в кеш, к результатам запросов, извлеченным из кеша.

Также «эффективность» работы кэширования можно рассчитать по формуле:

Qcache_hits / (Qcache_inserts + Qcache_not_cached)

Как узнать, что query_cache_size был выбран верно?

На это обычно указывает qcache_free_memory , отличный от нуля. При этом желательно, чтобы параметр qcache_lowmem_prunes стремился к 0. Если же qcache_lowmem_prunes очень велик, рекомендую увеличить query_cache_size .

Настраиваем многопоточность в mysql

Thread_concurrency – количество одновременных процессов, «обрабатывающих» конкурентные запросы к mysql. По документации советуют установить это значение, равное процессорам (ядрам) системы, умноженное на два.

Но и советуют обращать внимание на количество винчестеров, которое использует система, чтобы избежать излишней нагрузки на файловую систему. Тоесть, если Ваш сервер оснащен четырьмя Intel Xeon по 2.8 ГГЦ с hyper Threading, тогда Вам следует установить значение в my.cnf:

Thread_concurrency = 8

Как понять, что значение thread_concurrency установлено верно?

Во время большой нагрузки на сервер после изменения параметра thread_concurrency (наплыва посетителей или при помощи эмуляции нагрузки (например, при помощи Apache Bench с другого сервера )) понаблюдайте за количеством свободной оперативной памяти при помощи той же команды top . Кроме этого обратите внимание на параметр в строке Cpu(s): %wa .

Если значение этого параметра после изменения thread_concurrency выросло, и дошло до 60-90% , советую Вам снизить количество thread_concurrency . Обычно высокое значение %wa свидетельствует о возрастающей нагрузке на файловую подсистему (винчестер).

thread_cache_size – число потоков, которые сервер будет держать в кэше открытыми для обслуживания новых подсоединений. Можно установить равным значению max_connections + 1 (максимально возможному количеству соединений с б.д. +1). Но, чтобы достигнуть максимальной производительности, потребуется мониторинг переменной max_used_connections во время длительного промежутка времени (см. далее).

Т акже советую Вам просмотреть логии Mysql: обычно /var/log/mysql.log на предмет too many connections , когда mysql сервер отвергает подсоединение к базе данных из за того, что было достигнуто максимальное количество разрешенных подсоединений.

Например, при помощи команды grep, выполненной из ssh консоли linux:

Grep "Too many connections" /var/log/mysql.log | more

Совет: путь к логу mysql Вы сможете найти в файле my.cnf.

Если Вы нашли несколько строк с подобной ошибкой, тогда советую Вам увеличить значение max_connections , thread_cache_size , back_log , thread_concurrency :

Например для max_connections, thread_cache_size укажите в my.cnf:

Max_connections = 500 thread_cache_size = 501

Как узнать текущее значение параметра MYSQL, если оно не указано в my.cnf?

Для этого в консоли mysql с правами администратора mysql можно выполнить запрос:

SHOW VARIABLES LIKE "[имя переменных или wild card]";

Например, текущее значение max_connections можно узнать так

SHOW VARIABLES LIKE "max_connections";

Если Вы хотите вывести все переменные, содержащие в своем названии max, можно сформировать такой запрос в консоли mysql:

SHOW VARIABLES LIKE "%max%";

Чтобы получить значения и имена всех без исключения параметров mysql, можно выполнить такой запрос в консоли mysql с правами администратора mysql:

SHOW VARIABLES;

Как подобрать оптимальное значение thread_cache_size?

Выполните из консоли mysql с правами рута или администратора баз данных запрос:

SHOW STATUS LIKE "Max_used_connections";

И постоянно отслеживайте переменную max_used_connections через определенные промежутки времени, ее значение. Если значение max_used_connections = 72 , то устанавливаем значение thread_cache_size = 100 и выше (немногим больше max_used_connections ).

Настраиваем «очередь» конкурентных запросов back_log на подсоединение к mysql серверу.

back_log – сколько запросов на подсоединение к mysql серверу может быть помещено в очередь и в последствии обслужено, если сервер в данный момент занят обработкой запроса на подключение к mysql. По умолчанию пять запросов на подключение будет поставлено в очередь на ожидание. Остальные будут игнорироваться. Если mysql работает под сильной нагрузкой, рекомендую увеличить значение этого параметра.

Количество одновременно открытых таблиц в mysql.

table_cache (с версии Mysql с 5.1.3 – table_open_cache ) - количество открытых таблиц для всех потоков. Дело в том, что открытие таблиц – очень ресурсоемкий процесс, поэтому есть смысл «держать» определенное количество таблиц открытыми в кэше. Если у Вас на сервере используется большое количество таблиц одновременно, можно начать со значения в 1000:

Укажите в my.cnf:

SHOW STATUS LIKE "Opened_tables";

Opened_tables характеризует число таблиц, открытых в обход кэша, желательно, чтобы ее значение стремилось к 0.

Таблицы какого размера хранить в памяти?

max_heap_table_size - максимальный допустимый размер временной таблицы (типа MEMORY (HEAP)), хранящейся в памяти. При превышении этого раз мера таблица будет «создана» на жестком диске.

Например, укажите в my.cnf:

Max_heap_table_size = 64MB

tmp_table_size - максимальный размер памяти для временных таблиц, создаваемых MySQL, которые «хранятся» в оперативной памяти. Если размер временной таблицы превышает указанный, тогда таблица будет «создана» на диске.

Попробуйте установить значение в my.cnf равным 32 – 128 МБ:

Tmp_table_size = 64MB

Понаблюдайте также за состоянием created_tmp_disk_tables , ее значение должно стремиться к 0.

Для этого нужно выполнить запрос в консоли mysql:

SHOW STATUS LIKE "Created_tmp_disk_tables";

Если значение created_tmp_disk_tables гораздо больше нуля, попробуйте увеличить параметр tmp_table_size

Установка сервера MySQL из репозитория

Для установки сервера MySQL в Debian достаточно набрать команду:
apt-get install mysql-server

В операционной системе RHEL / CentOS также все довольно просто:
yum install mysql-server

Обратите внимание: после установки сервера MySQL его необходимо запустить. Для этого (как в Debian, так и в RHEL / CentOS) необходимо выполнить команду:
service mysqld start

Установка клиента MySQL из репозитория

Для установки клиента mysql запустите в debian следующую команду:
apt-get install mysql-client

В случае, если у Вас установлен RHEL / CentOS, выполните такую команду:
yum install mysql

При этом будет установлена актуальная (на момент выполнения команды) версия MySQL. На момент написания статьи это версия 5.5.

Установка библиотек MySQL для поддержки компиляции (MySQL development) из репозитория

Если Вы устанавливаете MySQL не по своему желанию, а потому, что это необходимо для установки какой-либо программы (например, asterisk, поддержка cdr_mysql), то просто установить сервер (и/или клиент) MySQL недостаточно. Необходимо также поставить библиотеки MySQL, чтобы компиляция зависящей от MySQL программы была успешной.

Для debian это будет команда:
apt-get install libmysqlclient-dev

Для RHEL / CentOS выполните:
yum install mysql-devel

Первоначальная настройка MySQL

Даже в случае, если Вы устанавливаете MySQL на домашнем/тестовом компьютере (не говоря уже об установке в производственной среде) необходимо совершить хотя бы минимальные действия по настройке MySQL сервера (клиента, как правило, настраивать не нужно). Например, задать пароль пользователя root в системе MySQL. По умолчанию пароль для root - пустой (без пароля).

Задать пароль MySQL root

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

Где rootpass - пароль для пользователя root. Совет : если Вы хотите, чтобы эта команда не отображалась в истории команд (и никто впоследствии не смог бы подсмотреть пароль рута из истории команд), перед этой командой просто поставьте пробел. То есть:
/usr/bin/mysqladmin -u root password "rootpass"

Настройка MySQL для работы в производственной среде

Выполните из командной строки:
/usr/bin/mysql_secure_installation

Данный скрипт (если ответить на задаваемые вопросы yes) - установит новый пароль root (пароль будет запрошен), удалит пользователя anonymous, запретит логинится с удаленных машин под root-ом, удалит тестовую базу.

Создать необходимую базу данных и пользователя для нее

Для создания базы данных в MySQL необходимо сначала подключиться к MySQL, после чего выполнить mysql запрос для создания базы данных. Для этого выполните из командной строки linux:
mysql -u root -p

При этом будет запрошен пароль для пользователя, имя которого указано после опции -u (в данном случае - пароль пользователя root). При правильном введении пароля появится приглашение MySQL к вводу команд:
mysql>_

Это командная строка MySQL. Все SQL запросы и команды на создание баз данных, пользователей и т.д. вводятся в этой командной строке.

Для создания базы данных выполните в командной строке MySQL:
create database имя-базы-данных character set кодировка-базы-данных;

например:
create database asterisk character set utf8;

Кодировку можно не указывать, при этом будет использоваться кодировка по умолчанию (см. настройки сервера MySQL):
create database mydatabase;

Теперь создадим пользователя MySQL и дадим ему полные права на созданную базу данных:
grant all privileges on имя-базы-данных.* to имя-пользователя @localhost identified by " пароль-пользователя ";
например:
grant all privileges on asterisk.* to asterisk_user@localhost identified by "asterisk_password";

добавление в базу данных таблиц из файла

Если у Вас есть таблицы в файлах, которые Вы бы хотели добавить в базу данных, выполните следующую команду:
mysql -u имя-пользователя-mysql -p имя-базы-данных < имя-файла-с-таблицей
например:
mysql -u root -p asterisk < asterisk-cdr.sql
при этом после запуска указанной команды у Вас будет запрошен пароль пользователя MySQL (в данном случае - пароль пользователя root), после чего (если пароль верный!) будет выполнен запрос MySQL, находящийся в файле (в данном случае - в asterisk-cdr.sql).

Возможны также масса дополнительных вариантов/опций/рекомендаций по установке/настройке MySQL, в частности установка кодировки / языка по умолчанию (параметры MySQL хранятся в my.cnf), поиск пользователей с пустыми паролями и замена паролей на непустые, настройка iptables для удаленного подключения к mysql, и так далее. Здесь же были рассмотрены минимально необходимые действия для быстрого начала работы с MySQL.



Понравилась статья? Поделиться с друзьями: