В оболочке пробелы имеют значение.
Заменить:
if [$SERVER_NAME == $i]
с:
if [ "$SERVER_NAME" = "$i" ]
Без пробелов оболочка считает, что вы хотите запустить команду с именем [$SERVER_NAME
(, например[servr1
)с аргументами ==
и $i]
. С пробелом оболочка запускает команду test , обозначаемую как [
.
Кроме того, всегда заключайте переменные оболочки в двойные кавычки, если только вы не понимаете, какие расширения оболочки будут применяться, и вы явно не хотите, чтобы они применялись.
Наконец, хотя bash принимает либо ==
, либо =
для обозначения строки -, равной внутри [...]
, другие оболочки понимают только =
. Для переносимости рекомендуется использовать =
для строки -, равной внутри [...]
.
d
в drwxr-x---
указывает, что файл mysql
имеет тип каталога. Каталог, скорее всего, был создан root
, его владелец и права доступа были изменены. Это была одноразовая работа -во время установки MySQL или чего-то еще.
Кроме того, .
в drwxr-xr-x.
вместо/var/log
указывает на наличие контекста безопасности SELinux . Я мало знаю о SELinux, но я считаю, что с ним можно предоставить дополнительные разрешения. Если вы считаете, что каталог mysql
был создан не совсем root
, тогда исследуйте эту зацепку.
Пользователь mysql
может создавать файлы внутри каталога mysql
. Для этого отсутствие разрешения на запись в /var/log
не имеет значения.
Этот факт может быть вам более знаком:
В Linux обычные пользователи не могут создавать файлы непосредственно в /home
. Тем не менее, у каждого есть собственный каталог внутри /home
, где они могут создавать файлы (/home/yves
, /home/kamil
, /home/bob
).
Точно так же mysql
имеет каталог внутри /var/log
для создания там файлов журналов.