Как найти расположение MySQL my.cnf
Существует ли команда MySQL для поиска конфигурационного файла my.cnf п одобно тому, как phpinfo() в PHP находит php.ini?
Ответ 1
Ответ 2
На самом деле , вы можете « запросить » у MySQL список всех мест, где он ищет my.cnf (или my.ini в Windows). Однако это не SQL-запрос. Просто выполните команду:
$ mysqladmin —help
Или для версии 5.7:
$ mysqld —help —verbose
В самых первых строках ответа вы найдете сообщение со списком всех мест my.cnf. На моей машине это:
Параметры по умолчанию считываются из следующих файлов в указанном порядке:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/etc/my.cnf
~/.my.cnf
Или для Windows:
Параметры по умолчанию считываются из следующих файлов в указанном порядке:
C:\Windows\my.ini
C:\Windows\my.cnf
C:\my.ini
C:\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
Обратите внимание, что может случиться так, что ни в одном из этих мест не окажется файла my.cnf. Поэтому вы можете создать файл самостоятельно — используйте один из образцов конфигурационных файлов, поставляемых с дистрибутивом MySQL (в Linux смотрите файлы /usr/share/mysql/*.cnf и используйте тот, который подходит вам — скопируйте его в /etc/my.cnf, а затем измените по необходимости).
Также обратите внимание, что существует опция командной строки —defaults-file, которая может определить собственный путь к файлу my.cnf или my.ini. Например, для MySQL 5.5 на Windows это указывает на файл my.ini в каталоге данных, который обычно не указывается в mysqld —help —verbose. В Windows — посмотрите свойства службы, чтобы выяснить, так ли это в вашем случае.
Наконец, проверьте сайт https://dev.mysql.com/doc/refman/8.0/en/option-files.html — там все описано более подробно.
Ответ 3
mysql —help | grep /my.cnf | xargs ls
Эта команда подскажет вам, где находится my.cnf на Mac/Linux:
ls: cannot access ‘/etc/my.cnf’: Нет такого файла или каталога
ls: cannot access ‘~/.my.cnf’: Нет такого файла или каталога
/etc/mysql/my.cnf
В данном случае он находится в файле /etc/mysql/my.cnf.
Ответ 4
Это может сработать:
strace mysql «;» 2>&1 | grep cnf
На моей машине этот код выводит:
stat64(«/etc/my.cnf», 0xbf9faafc) = -1 ENOENT (No such file or directory)
stat64(«/etc/mysql/my.cnf», ) = 0
open(«/etc/mysql/my.cnf», O_RDONLY|O_LARGEFILE) = 3
read(3, «# /etc/mysql/my.cnf: The global «. 4096) = 4096
stat64(«/home/xxxxx/.my.cnf», 0xbf9faafc) = -1 ENOENT (No such file or directory)
Таким образом, похоже, что /etc/mysql/my.cnf — то, что надо, поскольку stat64() и read() были выполнены успешно.
Ответ 5
По умолчанию mysql ищет my.cnf сначала в папке /etc. Если в этой папке нет файла /etc/my.cnf, я советую вам создать новый файл в следующей папке, как указано в документации (https://dev.mysql.com/doc/refman/5.6/en/option-files.html).
Вы также можете поискать существующий my.cnf в вашей установке mysql. Для этого запустите следующую команду:
sudo find / -name «*.cnf»
Вы можете использовать следующий конфигурационный файл с таблицей myisam и без поддержки innodb mysql (из установки порта mysql на mac os x maverick). Пожалуйста, проверьте каждую команду в этом конфигурационном файле.
# Пример конфигурационного файла MySQL для большинства систем.
#
# Это работает для большой системы с памятью = 512M, в которой работает в основном
# MySQL.
#
# Программы MySQL ищут файлы опций в нескольких
# местах, которые зависят от платформы развертывания.
# Вы можете скопировать этот файл опций в одно из этих мест. Информацию об этих местах см:
# http://dev.mysql.com/doc/mysql/en/option-files.html
#
# В этом файле вы можете использовать все опции, которые поддерживает программа.
# Если вы хотите узнать, какие опции поддерживает программа, запустите программу
# с опцией «—help».
# Следующие опции будут передаваться всем клиентам MySQL
[client]
#password = your_password
port = 3306
socket = /opt/local/var/run/mysql5/mysqld.sock
# Далее следуют записи для некоторых конкретных программ
# The MySQL server
[mysqld]
port = 3306
socket = /opt/local/var/run/mysql5/mysqld.sock
skip-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
# Try number of CPU’s*2 for thread_concurrency
thread_concurrency = 8
# Не следует прослушивать порт TCP/IP. Это может повысить безопасность,
# если все процессы, которым нужно подключиться к mysqld, работают на одном хосте.
# Все взаимодействие с mysqld должно осуществляться через сокеты Unix или именованные каналы.
# Обратите внимание, что использование этой опции без включения именованных труб в Windows
# (с помощью опции «enable-named-pipe») сделает mysqld бесполезным!
#
#skip-networking
# Replication Master Server (по умолчанию)
# Для репликации требуется двоичное протоколирование
log-bin=mysql-bin
# двоичный формат протоколирования — рекомендуется смешанный режим
binlog_format=mixed
# требуемый уникальный идентификатор от 1 до 2^32 — 1
# значение по умолчанию равно 1, если master-host не установлен
# но не будет функционировать как мастер, если пропущено
server-id = 1
# Replication Slave (закомментируйте раздел master, чтобы использовать это)
#
# Чтобы настроить этот хост в качестве ведомого устройства репликации, вы можете выбрать между
# двумя методами:
#
# 1) Использовать команду CHANGE MASTER TO (полностью описана в нашем руководстве) — #
# синтаксис следующий:
#
# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,
# MASTER_USER=, MASTER_PASSWORD= ;
#
# где , , заменяются строками в кавычках, а
# номером порта мастера (по умолчанию 3306).
#
# Пример:
#
# CHANGE MASTER TO MASTER_HOST=’125.564.12.1′, MASTER_PORT=3306,
# MASTER_USER=’joe’, MASTER_PASSWORD=’secret’;
#
# ИЛИ
#
# 2) Установите переменные, указанные ниже. Однако в случае, если вы выберете этот метод, то
# запустите репликацию в первый раз (даже неудачно, например ,
# если вы неправильно ввели пароль в master-password и ведомому не удается
# подключиться), ведомый создаст файл master.info, и люб ы е последующ и е
# изменения в этом файле значений переменных ниже будут проигнорированы и
# отменяться содержимым файла master.info, если вы не выключите
# ведомый сервер, удалите файл master.info и перезапустите ведомый сервер.
# По этой причине вы можете оставить приведенные ниже строки нетронутыми
# (закомментированные) и вместо них использовать CHANGE MASTER TO (см. выше)
#
# требуется уникальный идентификатор от 2 до 2^32 — 1
# (и отличный от master)
# по умолчанию равен 2, если установлен master-host
# но не будет функционировать как ведомое устройство, если пропущено
#server-id = 2
#
# Мастер репликации для этого ведомого — обязательный параметр
#master-host =
#
# Имя пользователя, которое ведомый будет использовать для аутентификации при подключении
# к ведущему устройству — обязательный параметр
#master-user =
#
# Пароль, с которым ведомый будет аутентифицироваться при подключении к
# ведущим — обязательный параметр
#master-password =
#
# Порт, на котором прослушивается мастер ,
# необязательный параметр — по умолчанию 3306
#master-port =
#
# двоичное протоколирование — не требуется для ведомых, но рекомендуется установить
#log-bin=mysql-bin
# Не комментируйте следующее, если вы используете таблицы InnoDB
#innodb_data_home_dir = /opt/local/var/db/mysql5
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /opt/local/var/db/mysql5
# Вы можете установить .._buffer_pool_size до 50 — 80 %
# оперативной памяти, но остерегайтесь слишком большого использования памяти.
#innodb_buffer_pool_size = 256M
#innodb_additional_mem_pool_size = 20M
# Установите размер .._log_file_size на 25 % от размера буферного пула
#innodb_log_file_size = 64M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Удалите следующий символ комментария, если вы не знакомы с SQL
#safe-updates
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Конфигурация файла my.cnf в MySQL
Файл my.cnf предназначен для настройки следующих параметров при запуске MySQL в командной строке с файлом cnf, тогда нет необходимости добавлять такие параметры в команду при запуске загрузки.
Этот файл my.cnf может быть настраиваемым расположением, или вы можете использовать следующее расположение по умолчанию, пока он находится в расположении по умолчанию, MySQL автоматически распознает его (устанавливается через источник deb или APT, исходное расположение находится в списке ниже):
имя файла | цель |
---|---|
/etc/my.cnf | Глобальные параметры |
/etc/mysql/my.cnf | Глобальные параметры |
SYSCONFDIR/my.cnf | Глобальные параметры |
$MYSQL_HOME/my.cnf | Параметры для конкретного сервера (только сервер) |
defaults-extra-file | Указанный файл —defaults-extra-file, если есть |
~/.my.cnf | Пользовательские параметры |
~/.mylogin.cnf | Параметры пути входа для конкретного пользователя (только на стороне клиента) |
Приведенное выше подробное описание может относиться к официальному объяснению: https://dev.mysql.com/doc/refman/5.7/en/option-files.html
Короче говоря, независимо от того, используете ли вы установку исходного кода APT, установку пакета deb или установку пакета двоичного (сжатый пакет tar.gz), вы можете настроить конфигурацию запуска MySQL и настройку с помощью файла my.cnf.
Начиная с версии 5.7.18, двоичный пакет больше не содержит образец файла my-default.cnf, поэтому я извлек образец из версии 5.7.17, но обнаружил, что в нем не слишком много конфигураций. Содержимое my-default.cnf выглядит следующим образом :
How to find out the location of currently used MySQL configuration file in linux
How do I know which configuration file is used by MySQL currently? Is there any command or something to find it out?
7 Answers 7
The information you want can be found by running
I tried this command on my machine:
mysql --help | grep "Default options" -A 1
Default options are read from the following files in the given order: /etc/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
See if that works for you.
+1 Another way is ‘my_print_defaults mysqld’ (to find what options will be passed to mysqld when it’s started).
The Default options may work on a standard system. I was working on a highly configured system and the default location wasn’t available. So I used the answer below to use «locate my.cnf» which provided me the exact location of my file.
mysqld —help —verbose will find only location of default configuration file. What if you use 2 MySQL instances on the same server? It’s not going to help.
Good article about figuring it out:
New link here of the original article. When I have time I will update this answer with a summary: psce.com/blog/2012/04/01/how-to-find-mysql-configuration-file
If you are using terminal just type the following:
You can use the report process status ps command:
You should find them by default in a folder like /etc/my.cnf , maybe also depends on versions. From MySQL Configuration File:
Interestingly, the scope of this file can be set according to its location. The settings will be considered global to all MySQL servers if stored in /etc/my.cnf. It will be global to a specific server if located in the directory where the MySQL databases are stored (/usr/local/mysql/data for a binary installation, or /usr/local/var for a source installation). Finally, its scope could be limited to a specific user if located in the home directory of the MySQL user (~/.my.cnf). Keep in mind that even if MySQL does locate a my.cnf file in /etc/my.cnf (global to all MySQL servers on that machine), it will continue its search for a server-specific file, and then a user-specific file. You can think of the final configuration settings as being the result of the /etc/my.cnf, mysql-data-dir/my.cnf, and ~/.my.cnf files.
There are a few switches to package managers to list specific files.
There are switches to rpm command, -q for query, and -c or —configfiles to list config files. There is also -l or —list
The —configfiles one didn’t quiet work for me, but —list did list a few .cnf files held by mysql-server
DEB Systems:
Also with limited success: dpkg —listfiles mysql-server