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
директивы, файлы, названные
эти директивы обрабатываются всякий раз, когда файл опций
обработаны, независимо от того, где они появляются в файле.