Mysql настройки: Настройка MySQL / Конфигурирование сервера / Документация

Что нужно настроить в mySQL сразу после установки? / Хабр

WASD42

MySQL *

Перевод

Автор оригинала:

peter

Вольный перевод довольно старой статьи с MySQL Performance Blog о том, что лучше сразу же настроить после установки базовой версии mySQL.


Удивительно, сколько народу устанавливает mySQL на свои сервера и оставляют его с настройками по умолчанию.

Несмотря на то, что в mySQL существует довольно много настроек, которые Вы можете изменить, есть набор действительно очень важных характеристик, которые обязательно нужно оптимизировать под собственный сервер. Обычно после такой небольшой настройки производительность сервера заметно увеличивается.

  • key_buffer_size — крайне важная настройка при использовании MyISAM-таблиц. Установите её равной около 30-40% от доступной оперативной памяти, если используете только MyISAM. Правильный размер зависит от размеров индексов, данных и нагрузки на сервер — помните, что MyISAM использует кэш операционной системы (ОС), чтобы хранить данные, поэтому нужно оставить достаточно места в ОЗУ под данные, и данные могут занимать значительно больше места, чем индексы. Однако обязательно проверьте, чтобы всё место, отводимое директивой key_buffer_size под кэш, постоянно использовалось — нередко можно видеть ситуации, когда под кэш индексов отведено 4 ГБ, хотя общий размер всех .MYI-файлов не превышает 1 ГБ. Делать так совершенно бесполезно, Вы только потратите ресурсы. Если у Вас практически нет MyISAM-таблиц, то key_buffer_size следует выставить около 16-32 МБ — они будут использоваться для хранения в памяти индексов временных таблиц, создаваемых на диске.
  • innodb_buffer_pool_size — не менее важная настройка, но уже для InnoDB, обязательно обратите на неё внимание, если собираетесь использовать в основном InnoDB-таблицы, т. к. они значительно более чувствительны к размеру буфера, чем MyISAM-таблицы. MyISAM-таблицы в принципе могут неплохо работать даже с большим количеством данных и при стандартном значении key_buffer_size, однако mySQL может сильно «тормозить» при неверном значении innodb_buffer_pool_size. InnoDB использует свой буфер для хранения и индексов, и данных, поэтому нет необходимости оставлять память под кэш ОС — устанавливайте innodb_buffer_pool_size в 70-80% доступной оперативной памяти (если, конечно, используются только InnoDB-таблицы). Относительно максимального размера данной опции — аналогично key_buffer_size — не стоит увлекаться, нужно найти оптимальный размер, найдите лучшее применение доступной памяти.
  • innodb_additional_mem_pool_size — данная опция практически никак не влияет на производительность mySQL, однако рекомендую оставлять для InnoDB около 20 МБ (или чуть больше) под различные внутренние нужды.
  • innodb_log_file_size — крайне важная настройка в условиях баз данных с частыми операциями записи в таблицы, в особенности при больших объёмах. Большие размеры увеличивают быстродействие, однако будьте осторожны — увеличится и время восстановления данных. Я обычно выставляю значение около 64-512 МБ в зависимости от размера сервера.
  • innodb_log_buffer_size — стандартное значение данной опции вполне подойдёт для большинства систем со средним количеством операций записи и небольшими транзакциями. Если же в Вашей системе бывают всплески активности, или Вы активно работаете с BLOB-данными, то рекомендую немного увеличить значение innodb_log_buffer_size. Однако не переусердствуйте — слишком большое значение будет пустой тратой памяти: буфер сбрасывается каждую секунду, поэтому Вам не понадобится больше места, чем требуется в течение этой секунды. Рекомендуемое значение — около 8-16 МБ, а для небольших баз — и того меньше.
  • innodb_flush_log_at_trx_commit — жалуетесь, что InnoDB работает в 100 раз медленнее MyISAM? Вероятно, Вы забыли про настройку innodb_flush_log_at_trx_commit. Значение по умолчанию «1» означает, что каждая UPDATE-транзакция (или аналогичная команда вне транзакции) должна сбрасывать буфер на диск, что достаточно ресурсоёмко. Большинство приложений, в особенности ранее использовавшие таблицы MyISAM, будут хорошо работать со значением «2» (т.е. «не сбрасывать буфер на диск, только в кэш ОС»). Лог, однако, всё равно будет сбрасываться на диск каждые 1-2 секунды, поэтому в случае аварии Вы потеряете максимум 1-2 секунды обновлений. Значение «0» повысит производительность, но Вы рискуете потерять данные даже при аварийной остановке mySQL-сервера, в то время как при установке значение innodb_flush_log_at_trx_commit в «2» Вы потеряете данные только при аварии всей операционной системы.
  • table_cache — открытие таблиц может быть весьма ресурсоёмко. К примеру, MyISAM-таблицы помечают заголовки .MYI файлов как «используемые в текущий момент». Обычно не рекомендуется открывать таблицы слишком часто, поэтому лучше, чтобы кэш был достаточных размеров, чтобы держать все Ваши таблицы открытыми. Для этого используется некоторое количество ресурсов ОС и оперативной памяти, однако это обычно не является существенной проблемой для современных серверов. Если у Вас несколько сотен таблиц, то стартовым значением для опции table_cache может быть«1024» (помните, что каждое соединение требует свой собственный дескриптор). Если у Вас ещё больше таблиц или очень много соединений — увеличьте значение параметра. Я видел mySQL сервера со значением table_cache равной 100 000.
  • thread_cache — создание/уничтожение потоков также является ресурсоёмкой операцией, которая происходит при каждой установке соединения и каждом разрыве соединения. Я обычно выставляю эту опцию равную 16. Если у Вашего приложения могут быть скачки количество конкурентных соединений и по переменной Threads_Created виден быстрый рост количества потоков, то стоит увеличить значение thread_cache. Цель — не допускать создания новых потоков в условиях нормального функционирования сервера.
  • query_cache_size — если Ваше приложение много и часто читает данные, и при этом у Вас нет кэша на уровне приложения, эта опция может очень помочь. Не ставьте здесь слишком большое значение, так как обслуживание большого кэша запросов будет само по себе затратным. Рекомендуемое значение — от 32 до 512 МБ. Не забудьте проверить, насколько хорошо используется кэш запросов — в некоторых условиях (при небольшом количестве хитов в кэше, т.е. когда практически не выбираются одинаковые данные) использование большого кэша может ухудшить производительность.


Как Вы можете видеть, это — глобальные настройки. Эти переменные зависят от «железа» сервера и используемых движков mySQL, в то время как сессионные переменные обычно настраиваются специально под конкретные задачи. Если Вы в основном используете простые запросы, то нет никакой необходимости увеличивать значение sort_buffer_size, даже если у Вас есть лишние 64 ГБ оперативной памяти. Более того, большие значения кэшей могут только ухудшить производительность сервера. Сессионные переменные лучше оставить на потом, для тонкой настройки сервера.

PS: инсталляция mySQL идёт с несколькими предустановленными файлами my.cnf, рассчитанными под разную нагрузку. Если Вам некогда настраивать сервер вручную, то обычно лучше использовать их, чем стандартный конфигурационный файл, выбрав тот, что больше подойдёт под нагрузку Вашего сервера.

Теги:

  • mysql
  • настройка

Хабы:

  • MySQL

Установка и настройка MySQL в Ubuntu 20.04

MySQL — это реляционная СУБД, которая использует язык запросов SQL. В инструкции мы рассмотрим, как запустить MySQL на Ubuntu 20.04. Для этого нам потребуется облачный сервер.

Создание облачного сервера

Создать облачный сервер с операционной системой Ubuntu 20.04 можно в Облачной платформе Selectel.

Откройте панель управления, перейдите в раздел Серверы и нажмите Создать сервер.

В качестве источника выберите в списке Ubuntu 20.04.

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

Чтобы в дальнейшем можно было подключиться к серверу извне, создайте плавающий IP-адрес. Для этого в выпадающем списке Сеть выберите Плавающий IP-адрес.

Подготовка системы

Перед установкой MySQL сервер нужно подготовить: подключиться к нему по SSH и настроить брандмауэр с помощью UFW.

Подключение по SSH

Для подключения по SSH в терминале локальной машины введите:

ssh root@server_ip

IP-адрес сервера находится на вкладке Порты на странице сервера.

Пароль для root-пользователя, который требуется при аутентификации, можно найти на вкладке Консоль.

Настройка брандмауэра в Ubuntu

После подключения настройте брандмауэр так, чтобы он разрешал подключения к серверу по SSH.

Обновите индекс пакетов:

sudo apt update

Установите утилиту UFW для настройки брандмауэра:

sudo apt install ufw

Проверьте список профилей UFW:

sudo ufw app list

В списке должен быть указан OpenSSH:

Available applications:
  OpenSSH

Разрешите подключения по SSH:

sudo ufw allow OpenSSH

Активируйте брандмауэр:

sudo ufw enable

Убедитесь, что брандмауэр активен, и включены профили OpenSSH:

sudo ufw status

Вывод будет выглядеть так:

Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)   

Теперь можно переходить к установке и настройке MySQL на облачном сервере.

Установка MySQL

Установить MySQL на Ubuntu 20.04 можно через пакет:

sudo apt install mysql-server

На момент публикации инструкции по умолчанию ставится версия 8.0.23.

Вы можете проверить установленную версию:

mysql --version

Начальная настройка MySQL

Запустите скрипт для повышения безопасности MySQL:

sudo mysql_secure_installation

Система запросит разрешение на установку плагина валидации паролей. Этот плагин проверяет безопасность пароля и позволяет пользователю ставить только достаточно защищенные пароли.

Если вы хотите установить этот плагин, введите в консоли y или Y.

Есть три уровня защищенности пароля: LOW (0), MEDIUM (1) и STRONG (2). Чтобы задать уровень пароля, нажмите соответствующую цифру, например, 2 для сильного пароля. Даже если вы на предыдущем шаге не установили плагин, система запросит вас поставить пароль для пользователя root — введите его два раза.

Если плагин установлен, будет показан уровень надёжности пароля Estimated strength of the password.

Далее система задаст ряд вопросов: хотите ли вы использовать этот пароль для продолжения работы, удалить ли всех анонимных пользователей, запретить удаленно подключаться как root, удалить тестовую БД и доступ к ней, перезагрузить таблицы с привилегиями. Вы можете ответить на все эти вопросы положительно: y, Y или Enter.

Если в выводе появится All done!, то пароль для root успешно настроен.

По умолчанию вход в MySQL в Ubuntu не будет происходить по паролю. Чтобы настроить подключение через пароль, следуйте инструкции ниже.

Настройка аутентификации и управление пользователями

Аутентификация по паролю

Для root-пользователя аутентификация в MySQL происходит с использованием плагина auth_socket. Чтобы при подключении запрашивался пароль, нужно изменить плагин.

Войдите в оболочку MySQL:

sudo mysql

Посмотрите, какой плагин используется:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Для пользователя root используется auth_socket:

Назначьте пользователю root новый плагин caching_sha2_password. Также установите пароль того уровня надежности, который вы задали ранее (на шаге Базовая настройка MySQL) — это может быть, например, тот же самый пароль. Введите его вместо password:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';

Некоторые приложения для работы с MySQL (например, phpMyAdmin) не будут надежно работать с плагином caching_sha2_password. В таком случае лучше установить другой плагин — mysql_native_password.

Активируйте изменения:

mysql> FLUSH PRIVILEGES;

Проверьте, что для пользователя root плагин изменился на caching_sha2_password:

mysql> SELECT user,authentication_string,plugin,host FROM mysql. user;

Закройте командную строку MySQL:

mysql> exit

Дополнительный пользователь (опционально)

Вы можете создать дополнительного пользователя для работы с MySQL.

Если вы установили аутентификацию по паролю, изменилась команда для подключения к консоли MySQL:

mysql -u root -p

Если у вас не установлена аутентификация по паролю, то для входа в MySQL используйте:

sudo mysql

Создайте нового пользователя и поставьте пароль:

mysql> CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';

Если вы хотите дать пользователю полный доступ к определенной базе данных, используйте:

mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'new_user'@'localhost';

Закройте консоль MySQL:

mysql> exit

Тестирование MySQL

Посмотрите статус MySQL:

systemctl status mysql

В выводе должен быть индикатор зеленого цвета и статус active:

● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql. service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-03-22 09:57:07 UTC; 2h 39min ago
   Main PID: 2630 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 1107)
     Memory: 331.4M
     CGroup: /system.slice/mysql.service
             └─2630 /usr/sbin/mysqld

По какой-то причине сервис может быть не активен. В таком случае запуск MySQL в Ubuntu происходит через команду:

sudo systemctl start mysql

Если вы хотите дополнительно проверить работу MySQL, используйте инструмент mysqladmin — он нужен для администрирования MySQL-сервера. Подключитесь к MySQL и запросите пароль от root:

sudo mysqladmin version -u root -p

Если вывод выглядит подобным образом, то MySQL успешно установлена и готова к использованию:

mysqladmin  Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates.  Other names may be trademarks of their respective
owners.
Server version		8.0.23-0ubuntu0.20.04.1
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/var/run/mysqld/mysqld.sock
Uptime:			2 hours 47 min 34 sec
Threads: 2  Questions: 28  Slow queries: 0  Opens: 141  Flush tables: 3  Open tables: 60  Queries per second avg: 0.002

Удаление MySQL

Если по какой-то причине вам нужно удалить MySQL из Ubuntu 20.04, сначала остановите сервисы:

sudo systemctl stop mysql

Удалите пакеты MySQL:

sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*

Удалите всех пользователей:

sudo deluser --remove-home mysql
sudo delgroup mysql

Удалите файлы базы данных, конфигурационные файлы и логи:

sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql

Удалите оставшиеся зависимости:

sudo apt-get autoremove
sudo apt-get autoclean

MySQL :: Справочное руководство по MySQL 5.

7 :: 5.1.1 Настройка сервера

5.1.1 Настройка сервера

Сервер MySQL, mysqld , имеет много команд.
параметры и системные переменные, которые можно установить при запуске на
настроить его работу. Чтобы определить параметр команды по умолчанию
и значения системных переменных, используемые сервером, выполните это
команда:

 $> mysqld --verbose --help 

Команда выдает список всех mysqld
параметры и настраиваемые системные переменные. Его вывод включает в себя
параметр по умолчанию и значения переменных и выглядит примерно так:

 счетчик событий прерывания подчиненного устройства 0
разрешить-подозрительные-udfs FALSE
архив включен
автоинкремент-инкремент 1
автоинкремент-смещение 1
автофиксация ИСТИНА
автоматические sp-привилегии ИСТИНА
избежать временного обновления FALSE
отставание 80
базовый каталог /home/jon/bin/mysql-5.7/
...
tmpdir /tmp
размер блока транзакции-распределения 8192
изоляция транзакций REPEATABLE-READ
транзакция prealloc размер 4096
транзакция только для чтения FALSE
транзакция-запись-установка-извлечение ВЫКЛ. 
обновляемые-представления-с-ограничением ДА
подтвердить-пользовательские-плагины ИСТИНА
подробный ИСТИНА
тайм-аут ожидания 28800 

Чтобы увидеть текущие значения системных переменных, фактически используемые
server во время его работы, подключитесь к нему и выполните этот оператор:

 mysql> ПОКАЗАТЬ ПЕРЕМЕННЫЕ; 

Чтобы увидеть некоторые статистические индикаторы и индикаторы состояния для запущенного
сервер, выполните этот оператор:

 mysql> ПОКАЗАТЬ СТАТУС; 

Системные переменные и информация о состоянии также доступны с помощью
команда mysqladmin :

 $> переменные mysqladmin
$> расширенный статус mysqladmin 

Полное описание всех параметров команды, системных переменных,
и переменные состояния, см. следующие разделы:

  • Раздел 5.1.6, «Параметры команды сервера»

  • Раздел 5.1.7, «Системные переменные сервера»

  • Раздел 5. 1.9, «Переменные состояния сервера»

Более подробную информацию о мониторинге можно получить на
Схема производительности; см. главу 25, Схема производительности MySQL . В
Кроме того, схема MySQL sys представляет собой набор
объекты, обеспечивающие удобный доступ к данным, собранным
Схема производительности; см. главу 26, Схема системы MySQL .

MySQL использует очень масштабируемые алгоритмы, поэтому обычно вы можете
работать с очень небольшим объемом памяти. Однако, как правило, более высокая производительность
результат предоставления MySQL большего объема памяти.

При настройке сервера MySQL две наиболее важные переменные
configure key_buffer_size и
table_open_cache . Вам следует
сначала убедитесь, что вы правильно установили их, прежде чем
пытаясь изменить любые другие переменные.

В следующих примерах показаны некоторые типичные значения переменных для
различные конфигурации времени выполнения.

  • Если у вас есть хотя бы 1-2 ГБ памяти и много таблиц и вы хотите
    максимальная производительность при умеренном количестве клиентов, используйте
    что-то вроде этого:

     $> mysqld_safe --key_buffer_size=384M --table_open_cache=4000 \
               --sort_buffer_size=4M --read_buffer_size=1M и 
  • Если у вас всего 256 МБ памяти и всего несколько таблиц, но
    вы по-прежнему много сортируете, вы можете использовать что-то вроде
    это:

     $> mysqld_safe --key_buffer_size=64M --sort_buffer_size=1M 

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

  • С небольшим объемом памяти и большим количеством подключений используйте что-то вроде
    это:

     $> mysqld_safe --key_buffer_size=512K --sort_buffer_size=100K \
               --read_buffer_size=100 КБ и 

    Или даже это:

     $> mysqld_safe --key_buffer_size=512K --sort_buffer_size=16K \
               --table_open_cache=32 --read_buffer_size=8K \
               --net_buffer_length=1K и 

Если вы выполняете GROUP BY или
ORDER BY операций над таблицами, которые намного
больше доступной памяти, увеличьте значение
read_rnd_buffer_size для ускорения
чтение строк после операций сортировки.

Если вы укажете параметр в командной строке для
mysqld или mysqld_safe , это
остается в силе только для этого вызова сервера. Использовать
параметр каждый раз, когда сервер запускается, поместите его в файл параметров.
См. раздел 4.2.2.2, «Использование файлов опций».

MySQL :: Справочное руководство по MySQL 8.0 :: 4.2.2.2 Использование файлов опций

4.2.2.2 Использование файлов опций

Большинство программ MySQL могут считывать параметры запуска из файлов параметров.
(иногда называемые файлами конфигурации). Файлы опций предоставляют
удобный способ указать часто используемые параметры, чтобы они
не нужно вводить в командной строке каждый раз, когда вы запускаете
программа.

Чтобы определить, читает ли программа файлы опций, вызовите ее
с опцией --help . (За
mysqld , использовать
--подробный и
--help . ) Если программа читает
option-файлы, в справочном сообщении указывается, какие файлы он ищет.
для и какие группы параметров он распознает.

Примечание

Программа MySQL запускается с
--no-defaults опция не читает файлы опций
кроме .mylogin.cnf .

Сервер запущен с
persisted_globals_load система
переменная отключена не читается
mysqld-auto.cnf .

Многие файлы опций представляют собой простые текстовые файлы, созданные с использованием любого текста.
редактор. Исключения:

  • Файл .mylogin.cnf , содержащий
    варианты пути входа. Это зашифрованный файл, созданный
    утилита mysql_config_editor . Видеть
    Раздел 4.6.7, «mysql_config_editor — утилита настройки MySQL». «логин
    путь» — это группа опций, которая разрешает только определенные
    варианты: хост , пользователь ,
    пароль , порт и
    розетка . Клиентские программы указывают, какой логин
    путь для чтения из .mylogin.cnf с использованием
    параметр --login-path .

    Чтобы указать альтернативное имя файла пути входа в систему, установите
    MYSQL_TEST_LOGIN_FILE среда
    переменная. Эта переменная используется
    mysql-test-run.pl тестовая утилита, но
    также распознается mysql_config_editor
    и клиентами MySQL, такими как mysql ,
    mysqladmin и так далее.

  • Файл mysqld-auto.cnf в данных
    каталог. Этот файл в формате JSON содержит сохраненную систему
    переменные настройки. Он создается сервером после
    исполнение
    КОМПЛЕКТ
    СОХРАНЯТЬ
    или
    КОМПЛЕКТ
    PERSIST_ONLY
    оператор. Видеть
    Раздел 5.1.9.3, «Сохраняемые системные переменные». Управление
    mysqld-auto.cnf следует оставить на усмотрение
    сервера и не выполняется вручную.

  • Порядок обработки файла опций

  • Синтаксис файла опций

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

    Примечание

    Для получения информации о файлах опций, используемых с NDB Cluster.
    программы, см. Раздел 23.4, «Конфигурация кластера NDB».

    В Windows программы MySQL считывают параметры запуска из файлов
    показаны в следующей таблице в указанном порядке (файлы
    перечисленные первыми, читаются первыми, файлы, прочитанные позже, занимают
    приоритет).

    Таблица 4.1 Файлы параметров, читаемые в системах Windows

    Имя файла Назначение
    %WINDIR% \my.ini ,
    %WINDIR% \my.cnf
    Глобальные опции
    C:\my.ini , C:\my.cnf Глобальные опции
    BASEDIR \my.ini ,
    БАСЕДИР \my.cnf
    Глобальные опции
    дополнительные файлы по умолчанию Файл, указанный с помощью
    --дополнительный файл по умолчанию ,
    если есть
    %APPDATA% \MySQL\. mylogin.cnf Параметры пути входа (только для клиентов)
    DATADIR \mysqld-auto.cnf Системные переменные сохраняются с
    КОМПЛЕКТ
    ПЕРСИСТ
    или
    КОМПЛЕКТ
    PERSIST_ONLY
    (только сервер)

    В предыдущей таблице %WINDIR% представляет
    расположение вашего каталога Windows. Это обычно
    C:\WINDOWS . Используйте следующую команду, чтобы
    определить его точное местоположение по значению
    переменная среды WINDIR :

     C:\> эхо %WINDIR% 

    %APPDATA% представляет значение
    Каталог данных приложения Windows. Используйте следующую команду
    определить его точное местоположение по значению
    APPDATA переменная среды:

     C:\> эхо %APPDATA% 

    BASEDIR представляет базу MySQL
    каталог установки. Когда MySQL 8.0 был
    устанавливается с помощью установщика MySQL, обычно это
    C:\ PROGRAMDIR \MySQL\MySQL
    Сервер 8.0
    , в котором
    PROGRAMDIR представляет программы
    каталог (обычно Program Files для
    англоязычные версии Windows). Видеть
    Раздел 2.3.3, «Установщик MySQL для Windows».

    Важно

    Хотя установщик MySQL помещает большинство файлов в
    PROGRAMDIR , он устанавливает
    my.ini под
    C:\ProgramData\MySQL\Сервер MySQL
    8.0\
    каталог по умолчанию.

    DATADIR представляет данные MySQL
    каталог. Как привык найти
    mysqld-auto.cnf , его значение по умолчанию равно
    расположение каталога данных, встроенное при компиляции MySQL, но
    можно изменить на --каталог данных
    указанный как обрабатываемый файл параметров или параметр командной строки
    до обработки mysqld-auto. cnf .

    В Unix и Unix-подобных системах программы MySQL читаются при запуске
    параметры из файлов, показанных в следующей таблице, в
    указанный порядок (файлы, перечисленные первыми, читаются первыми, файлы читаются
    позже имеют приоритет).

    Примечание

    На платформах Unix MySQL игнорирует файлы конфигурации, которые
    доступны для записи во всем мире. Это сделано намеренно в целях безопасности
    мера.

    Таблица 4.2 Файлы параметров, читаемые в Unix и Unix-подобных системах

    Имя файла Назначение
    /etc/my.cnf Глобальные опции
    /etc/mysql/my.cnf Глобальные опции
    SYSCONFDIR /my. cnf Глобальные опции
    $MYSQL_HOME/my.cnf Опции для конкретного сервера (только сервер)
    дополнительные файлы по умолчанию Файл, указанный с помощью
    --дополнительный файл по умолчанию ,
    если есть
    ~/.my.cnf Пользовательские опции
    ~/.mylogin.cnf Параметры пути входа в систему для конкретного пользователя (только для клиентов)
    DATADIR /mysqld-auto.cnf Системные переменные сохраняются с
    КОМПЛЕКТ
    ПЕРСИСТ
    или
    КОМПЛЕКТ
    PERSIST_ONLY
    (только сервер)

    В предыдущей таблице ~ представляет
    домашний каталог текущего пользователя (значение
    $ДОМ ).

    SYSCONFDIR представляет каталог
    указывается с помощью SYSCONFDIR
    вариант CMake при сборке MySQL. По
    по умолчанию это каталог и т. д.
    находится в скомпилированном установочном каталоге.

    MYSQL_HOME — это переменная окружения.
    содержащий путь к каталогу, в котором
    находится специфичный для сервера файл my.cnf . Если
    MYSQL_HOME не установлен и вы запускаете
    сервер с помощью программы mysqld_safe ,
    mysqld_safe устанавливает его в
    BASEDIR , база MySQL
    каталог установки.

    DATADIR представляет данные MySQL
    каталог. Как привык найти
    mysqld-auto.cnf , его значение по умолчанию равно
    расположение каталога данных, встроенное при компиляции MySQL, но
    можно изменить с помощью --datadir
    указанный как обрабатываемый файл параметров или параметр командной строки
    до обработки mysqld-auto. cnf .

    Если найдено несколько экземпляров данной опции, последний
    экземпляр имеет приоритет, за одним исключением: для
    mysqld , первый
    экземпляр параметра --user
    используется в качестве меры безопасности, чтобы предотвратить указанный пользователем
    в файле параметров от переопределения в командной строке.

    Синтаксис файла опций

    Следующее описание синтаксиса файла опций относится к
    файлы, которые вы редактируете вручную. Это исключает
    .mylogin.cnf , созданный с использованием
    mysql_config_editor и зашифровано, и
    mysqld-auto.cnf , который создает сервер
    в формате JSON.

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

    Синтаксис для указания опций в файле опций аналогичен
    к синтаксису командной строки (см.
    Раздел 4.2.2.1, «Использование параметров командной строки»). Однако в варианте
    файл, вы опускаете два начальных дефиса в имени параметра и
    вы указываете только один параметр в строке. Например,
    --quick и --host=localhost
    в командной строке должно быть указано как
    быстрый и хост = локальный
    в отдельных строках в файле опций. Чтобы указать вариант
    форма
    --loose- opt_name
    в файле опций напишите его как
    свободный- opt_name .

    Пустые строки в файлах параметров игнорируются. Непустые строки могут
    принять любую из следующих форм:

    • # комментарий ,
      ; комментарий

      Строки комментариев начинаются с # или
      ; . Комментарий # можно
      также начинайте с середины строки.

    • [ группа ]

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

    • opt_name

      Это эквивалентно
      -- opt_name на
      командная строка.

    • opt_name = значение

      Это эквивалентно
      -- opt_name = значение
      в командной строке. В файле опций вы можете иметь
      пробелы вокруг символа = ,
      что-то не так в командной строке. Значение
      опционально может быть заключен в одинарные кавычки
      или двойные кавычки, что полезно, если значение
      содержит # символ комментария.

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

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

    • Обратная косая черта, за которой следует допустимый символ управляющей последовательности
      преобразуется в символ, представленный последовательностью.
      Например, \s преобразуется в
      пространство.

    • Обратная косая черта, за которой не следует допустимая управляющая последовательность
      характер остается неизменным. Например,
      \S сохраняется как есть.

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

    Правила для escape-последовательностей в файлах опций немного отличаются.
    из правил escape-последовательностей в строковых литералах в SQL
    заявления. В последнем контексте, если
    « x » не является допустимым
    символ управляющей последовательности,
    \ x становится
    x », а не
    \ х . Видеть
    Раздел 9.1.1, «Строковые литералы».

    Правила экранирования для значений файла опций особенно
    подходит для имен путей Windows, которые используют
    \ в качестве разделителя имени пути. Разделитель в
    путь Windows должен быть записан как \
    если за ним следует символ управляющей последовательности. Может быть
    пишется как \ или \ если это
    не является. В качестве альтернативы / можно использовать в
    Имена путей Windows и рассматриваются как \ .
    Предположим, вы хотите указать базовый каталог
    C:\Program Files\MySQL\Сервер MySQL
    8.0
    в файле опций. Это может быть
    сделано несколькими способами. Некоторые примеры:

     на основеir="C:\Program Files\MySQL\MySQL Server 8.0"
    baseir="C:\\Program Files\\MySQL\\MySQL Server 8.0"
    на основеir="C:/Program Files/MySQL/MySQL Server 8.0"
    baseir=C:\\Program\sFiles\\MySQL\\MySQL\sServer\s8.0 

    Если имя группы параметров совпадает с именем программы, параметры
    в группе относятся именно к этой программе. Например,
    [mysqld] и [mysql]
    группы применяются к серверу mysqld и
    клиентская программа mysql соответственно.

    Группа параметров [клиент] читается всеми.
    клиентские программы, представленные в дистрибутивах MySQL (но
    , а не на mysqld ). К
    понимать, как сторонние клиентские программы, использующие C API
    можно использовать файлы опций, см. документацию C API по адресу
    mysql_options().

    Группа [клиент] позволяет указать
    параметры, применимые ко всем клиентам. Например,
    [клиент] является подходящей группой для использования
    укажите пароль для подключения к серверу. (Но сделать
    убедитесь, что файл опций доступен только вам, поэтому
    что другие люди не смогут узнать ваш пароль.)
    поставить вариант в [клиент] группа
    если он не распознается всеми клиентами
    программы, которыми вы пользуетесь. Программы, которые не понимают
    вариант выхода после отображения сообщения об ошибке, если вы попытаетесь
    запустить их.

    Сначала укажите более общие группы опций, а затем более конкретные группы.
    потом. Например, группа [клиент]
    более общий, потому что он читается всеми клиентскими программами,
    тогда как [mysqldump] 9Группа 0051 читается только
    mysqldump . Параметры, указанные позже, переопределяются
    параметры, указанные ранее, поэтому размещение групп параметров в
    заказ [клиент] ,
    [mysqldump] включает
    mysqldump - конкретные параметры для переопределения
    [клиент] опции.

    Вот типичный файл глобальных опций:

     [клиент]
    порт=3306
    сокет=/tmp/mysql.sock
    [mysqld]
    порт=3306
    сокет=/tmp/mysql.sock
    key_buffer_size=16M
    max_allowed_packet=128M
    [mysqldump]
    быстро 

    Вот типичный файл опций пользователя:

     [клиент]
    # Следующий пароль отправляется всем стандартным клиентам MySQL
    пароль="мой пароль"
    [mysql]
    без автоматического перефразирования
    connect_timeout=2 

    Чтобы создать группы опций, которые будут доступны только для чтения
    серверов mysqld из определенного выпуска MySQL
    серии, используйте группы с названиями
    [mysqld-5. 7] ,
    [mysqld-8.0] и так далее.
    Следующая группа указывает на то, что
    Настройка sql_mode должна быть
    используется только серверами MySQL версии 8.0.x
    номера:

     [mysqld-8.0]
    sql_mode = ТРАДИЦИОННЫЙ 

    Включения файла опций

    Можно использовать директивы !include
    в файлах опций, чтобы включить другие файлы опций и
    !includedir для поиска в определенных каталогах
    для файлов опций. Например, для включения
    /home/mydir/myopt.cnf , используйте
    следующую директиву:

     !include /home/mydir/myopt.cnf 

    Для поиска в каталоге /home/mydir и
    прочитайте файлы опций, найденные там, используйте эту директиву:

     !includedir /home/mydir 

    MySQL не гарантирует порядок, в котором файлы опций
    в каталоге читаются.

    Примечание

    Любые файлы, которые можно найти и включить с помощью
    !includedir директива по операционной системе Unix
    системы должны иметь имена файлов, оканчивающиеся на
    .cnf . В Windows эта директива проверяет
    для файлов .ini или
    .cnf расширение.

    Запишите содержимое включенного файла опций, как и любой другой
    файл опций. То есть он должен содержать группы опций,
    каждому предшествует
    [ группа ] строка
    который указывает программу, к которой применяются параметры.

    Пока включенный файл обрабатывается, только те параметры
    в группах, которые ищет текущая программа.
    Другие группы игнорируются. Предположим, что
    файл my.cnf содержит эту строку:

     !include /home/mydir/myopt. cnf 

    И предположим, что /home/mydir/myopt.cnf
    выглядит так:

     [mysqladmin]
    сила
    [mysqld]
    key_buffer_size=16M 

    Если my.cnf обрабатывается
    mysqld , только
    [mysqld] группа в
    /home/mydir/myopt.cnf Используется . Если
    файл обрабатывается mysqladmin , только
    [mysqladmin] группа используется. Если файл
    обрабатывается любой другой программой, нет опций в
    /home/mydir/myopt.cnf .

    Директива !includedir обрабатывается
    аналогично, за исключением того, что все файлы опций в указанном каталоге
    читаются.

    Если файл опций содержит !include или
    !includedir директивы, файлы, названные
    эти директивы обрабатываются всякий раз, когда файл опций
    обработаны, независимо от того, где они появляются в файле.