MySQL, где путь my.cnf?

10

Мне удалось найти мой каталог установки для MySQL: /usr/local/mysql/

Где я могу найти путь, чтобы my.cnfузнать, где я должен настроить сервер? Я попытался создать /etc/my.cnf(как показано ниже), и это не имело никакого влияния

[mysqld]

#charset
collation_server=utf8_general_ci
character_set_server=utf8
default_character_set=utf8
Webnet
источник
Подробная информация о дистрибутиве, который вы используете, будет полезен.
Тим
Я уверен, что debian / * buntu / rhel / cent не будет использовать / usr / local из пакета установки. Это больше похоже на слабину или freebsd.
Тим

Ответы:

20

Согласно этой статье :

Выполнение этой команды из командной строки / терминала покажет, где MySQL будет искать файл my.cnf в системах Linux / BSD / OS X:

mysql --help | grep "Default options" -A 1 

Это выведет что-то вроде этого:

Default options are read from the following files in the given order: 
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 

Теперь вы можете проверять файлы, используя приведенный выше вывод в /etc/my.cnf, затем /etc/mysql/my.cnfи так далее. Если в одном из этих мест нет ни одного, вы можете создать его и знать, что MySQL будет его использовать.

Эрвин Майер
источник
3

В системе Linux «locate my.cnf» будет самым быстрым решением.

Если есть несколько my.cnf файлов, все смотрят , скорее всего (например , в /etc, /etc/mysql, /opt/mysql/etcи т.д.), то вы можете запустить , straceчтобы увидеть , где MySQL бинарными пытается найти свой конфигурационный файл, но я думаю , что это слишком много.

Павел Бродацкий
источник
Я понял -bash: locate: command not found... Я пытался, find / my.cnfно ничего не нашел.
Веб-сеть
Это предполагает, что ваш файл местонахождение был обновлен с момента создания файла my.cnf. Обычно это делается ежедневно через cron. Если вам нужно обновить его вручную, запустите «updatedb» от имени пользователя root
ckliborn
locate: command not foundне является проблемой updatedb, у него нет пакета.
Тим
установить пакет "slocate"
TheCompWiz
2

ОК, дикий выстрел в темноте:

Если база данных установлена в /usr/local/mysql, то поищите в /etc/localтечениеmy.cnf

Вот как вы можете сказать, если у вас есть my.cnf

Запустите этот запрос (<= 5.6.7)

SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME IN ('wait_timeout',
'innodb_buffer_pool_size','innodb_log_file_size');

ИЛИ (>= 5.6.8)он перешел на схему производительности.

SELECT * FROM PERFORMANCE_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME IN ('wait_timeout',
'innodb_buffer_pool_size','innodb_log_file_size');
SHOW GLOBAL VARIABLES LIKE 'wait_timeout';
SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW GLOBAL VARIABLES LIKE 'innodb_log_file_size';

Если вы должны получить:

Вы работаете с настройками по умолчанию, и есть вероятность, что my.cnfподарка может не быть .

НОТА:

Начиная с MySQL 5.7.6, информация, доступная из описанных здесь таблиц, также доступна из схемы производительности. Таблицы INFORMATION_SCHEMA устарели вместо таблиц Performance Performance и будут удалены в будущем выпуске MySQL. Для получения рекомендаций по переходу от таблиц INFORMATION_SCHEMA к таблицам Схемы Производительности см. Раздел 25.20, «Переход к Системе Схемы Производительности и Таблицам переменных состояния».

RolandoMySQLDBA
источник
-bash: updatedb: command not found
2012 года
Обновил мой ответ. Пожалуйста, попробуйте еще раз !!!
RolandoMySQLDBA
/usr/bin/which: no updatedb in (/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/java/bin:/usr/local/apache2/bin:/usr/local/firefox:/usr/local/mysql/bin:/usr/games:/usr/local/fetter/bin)
2012 года
1

Как вы установили MySQL и на какой платформе?

Метод грубой силы на Unixoid ОС:

find / -name my.cnf -print
Свен
источник
Я не установил это, это на машине, которой несколько лет. Это в сетиLinux mars 2.6.5-7.147-bigsmp #1 SMP Thu Jan 27 09:19:29 UTC 2005 i686 i686 i386 GNU/Linux
2012 года
1

strace -fe open /etc/init.d/mysql start 2>&1|grep my.cnf должен показать вам системный вызов, используемый для открытия файла.

Nils
источник
1

Кажется, что файл, созданный вашим cnf, заменяется другим. Проверьте порядок по умолчанию ниже.

От

mysqld --verbose --help

Параметры по умолчанию читаются из следующих файлов в указанном порядке: /etc/my.cnf ~ / .my.cnf /etc/my.cnf

ckliborn
источник
1

Как вы уверены, что ваш файл cnf не читается?

Вы перезапустили mysqld после изменения?

Вы пытались создать новую базу данных и смотрели на ее значения?

ckliborn
источник
0

Чтобы установить locate и updatedb, чтобы иметь возможность запустить его ..

Используя fedora, centos запускается как root:

yum install mlocate

если вы работаете в Ubuntu, запустите:

sudo apt-get install mlocate

После завершения установки запустите updatedb Fedora (от имени root):

$updatedb 

Ubuntu:

sudo updatedb

Затем вы можете запустить команду locate, как указано выше. И снова my.cnf обычно находится в / etc. Вы уверены, что MySQL установлен? Если нет, выполните приведенные выше команды, чтобы установить его и заменить mlocate на mysqld.

Дж Барон
источник