Я пытаюсь настроить работу cron для резервного копирования с моей ведомой машины. Поэтому мне нужно остановить раба
Я дал команду
mysqladmin --user=root --password=test_pass stop-slave
Но это бросает ошибку:
mysqladmin: ошибка подключения к серверу при локальном хосте: ошибка: «Доступ запрещен для пользователя root» @ «localhost» (с использованием пароля: ДА)
Сейчас попробовал с командой
mysqladmin --user=root --password stop-slave
Он запрашивает пароль, и я дал, как test_pass
и все было хорошо.
Почему так случилось? Какая альтернатива?
NB: Кстати моя версия mysql mysql-5.0.95-5
, это имеет какой-то смысл.
mysql
authentication
mysqladmin
Правин Прасаннан
источник
источник
'
одинарные кавычки должно предотвратить эту проблему. gnu.org/software/bash/manual/bashref.html#QuotingОтветы:
Аргументы командной строки могут интерпретироваться системной командной оболочкой, изменяя поведение команды или изменяя значение аргументов перед их передачей в вызываемую программу.
Когда аргумент (например, значение для
--password
) содержит символ, который может интерпретировать оболочка, их нужно либо заключить в кавычки (обычно заключенные в одинарные кавычки'
в unix, либо в двойные кавычки"
в Windows), либо экранировать по отдельности (обычно с обратной косой чертой\
перед каждым метасимволом) ) избегать интерпретации оболочкой.Хотя конкретные символы зависят от системы, некоторые символы, на которые следует обратить внимание:
Если для действительно плохого примера пароль был установлен на
pa$$word
...Дальнейшее чтение:
Обновление: для экранирования
'
одинарных или"
двойных кавычек в пароле, вы можете либо экранировать их с помощью обратной косой черты, либо заключить весь аргумент в противоположный стиль кавычек, если нет других символов, которые не совместимы с выбранным стилем цитирования. с.Если у вас есть одинарная кавычка и другие специальные символы, вы застряли с обратной косой чертой, потому что в Unix двойная кавычка "слабее", чем одинарная кавычка, и многие метасимволы по-прежнему раскрываются, когда заключены в двойные кавычки, но не одиночные кавычки.
Это не зависит от MySQL, но относится ко всему с аргументами командной строки.
Обычно вы можете использовать
echo
команду, чтобы увидеть, как оболочка интерпретирует ваши аргументы.Последующие действия: оболочка bash (и, возможно, некоторые другие) позволяет экранировать одинарные кавычки в строках, заключенных в одинарные кавычки, хотя соглашение является странным (вероятно, основанным на давно забытом решении, потерянном в глубине веков):
Замените каждый элемент
'
внутри строки'\''
перед тем, как заключить всю строку в одинарные кавычки ... чтобы буквенная строкаfoo'bar
была выражена как'foo'\''bar'
.Как я уже сказал, странно. Это необходимо, потому что обратная косая черта экранирует одиночную кавычку за пределами строки, заключенной в одну кавычку, обратная косая черта ничего не экранирует внутри строки с одинарными кавычками в bash, а строки с одинарными кавычками могут закрываться и открываться несколькими одинарными кавычками, если нет неоткрытых строк. промежуточные символы, которые имеют особое значение. Поэтому
'\''
закрывает цитирование строки, затем предоставляет экранированный литерал, а затем снова открывает цитирование строки.источник
pa$$word
Дополнение:
На Windows-машине мы также боролись с паролем: он содержал то,
%
что нужно экранировать как%%
(одних только цитат здесь недостаточно)источник