B.3.3.6 Как защитить или изменить файл сокета MySQL Unix
По умолчанию, файл сокета Unix, используемый сервером для связи с локальными клиентами, находится по адресу /tmp/mysql.sock. (В некоторых дистрибутивах каталог может отличаться, например, /var/lib/mysql для RPM.)
В некоторых версиях Unix любой пользователь может удалить файлы в каталоге /tmp или других аналогичных каталогах, используемых для временных файлов. Если файл сокета находится в таком каталоге на вашей системе, это может вызвать проблемы.
В большинстве версий Unix вы можете защитить каталог /tmp, чтобы файлы могли удалять только их владельцы или суперпользователь (root). Для этого установите бит sticky в каталоге /tmp, войдя как root и используя следующую команду:
$> chmod +t /tmp
Вы можете проверить, установлен ли бит sticky, выполнив команду ls -ld /tmp. Если последний символ разрешения - t, бит установлен.
Другой подход - изменить местоположение, где сервер создаёт файл сокета Unix. Если вы это сделаете, вы также должны сообщить клиентским программам о новом местоположении файла. Вы можете указать расположение файла несколькими способами:
-
Укажите путь в глобальном или локальном файле опций. Например, поместите следующие строки в
/etc/my.cnf:[mysqld] socket=/path/to/socket [client] socket=/path/to/socket
Укажите опцию
--socketв командной строке для mysqld_safe и при запуске клиентских программ.Установите переменную окружения
MYSQL_UNIX_PORTна путь к файлу сокета Unix.Перекомпилируйте MySQL из исходных кодов, чтобы использовать другое расположение файла сокета Unix по умолчанию. Определите путь к файлу с опцией
MYSQL_UNIX_ADDRпри запуске CMake. См. Раздел 2.8.7, «Опции конфигурации MySQL из исходных кодов».
Вы можете проверить, работает ли новое расположение сокета, попытавшись подключиться к серверу с помощью этой команды:
$> mysqladmin --socket=/path/to/socket version
© 2025 Oracle
Licensed under the GPLv2 License.