Можно использовать переменные среды в Apache .conf
файл, но как насчет MySQL, есть ли способ использовать их в файле конфигурации MySQL (my.ini
/my.cfg
)?
Самое близкое, что я смог найти, было справочная страница MySQL в котором упоминаются некоторые переменные, но не указывается, как их использовать, и являются ли они даже системными или внутренними переменными.
В моем случае мне нужен способ указать, что журналы должны храниться в подкаталоге системного временного каталога, но я не могу понять, как это указать. Например:
log-error="${temp}/MySQL_Logs/error.log"
innodb_log_group_home_dir="%temp%/PS_Logs/Logs/MySQL/"
?
Вы не можете сделать это в файле конфигурации, но вы можете изменить команду запуска, чтобы установить их таким образом.
например:
Установите LOG_DIR = "ваш каталог журнала" в консоли.
Затем измените сценарий запуска, включив в него опцию log-error.
mysqld --log-error=$LOG_DIR/error_log.log
Возможно, не самое элегантное решение, но, возможно, файл статической конфигурации можно заменить динамическим содержимым:
Вы можете поместить FIFO в путь к файлу журнала. Перед запуском MySQL вам нужно будет запустить мини-демон, который записывает в этот FIFO в бесконечном цикле. Условия гонки здесь не должны быть проблемой.
Демон будет записывать два блока данных в FIFO, сначала пустую строку, например, # конфигурационный файл с учетом среды, за которым следует, чтобы открыть FIFO. Как только эта первая запись вернется, он получит PID процесса чтения (например, через fuser), получит переменные, которые встречаются в файле, из / proc / $ {PID} / Environment, создаст команды для, например, sed для замены ссылок и записи вывода sed в FIFO.