Как установить дамп базы данных с помощью Сценария оболочки?

От bash страница справочника:

Любой символ в IFS, которая не является пробелом IFS, наряду ни с какими смежными пробельными символами IFS, разграничивает поле. Последовательность пробельных символов IFS также рассматривают как разделитель.

Это означает, что пробел IFS (пространство, вкладка и новая строка) не рассматривают как другие разделители. Если Вы хотите получить точно то же поведение с альтернативным разделителем, можно сделать некоторый свопинг разделителя с помощью tr или sed :

var=":abc::def:::ghi::::"
arr=($(echo -n $var | sed 's/ /%#%#%#%#%/g;s/:/ /g'))
for x in ${!arr[*]} ; do
   el=$(echo -n $arr | sed 's/%#%#%#%#%/ /g')
   echo "# arr[$x] \"$el\""
done

%#%#%#%#% вещью является волшебное значение для замены возможных пробелов в полях, она, как ожидают, будет "уникальна" (или очень unlinkely). Если Вы уверены, что никакое пространство никогда не будет в полях, просто отбросьте эту часть).

2
12.07.2011, 14:24
1 ответ
$ mysql -p$pass -u$user -h$otherhost $db < dumpfile

Это принимает dumpfile текст от mysqldump, содержа необработанные SQL-операторы.

Важно что там не быть никаким пространством между -p и пароль. (Я предполагаю, что Вы хотите автоматический вход в систему.), Если пароль сразу не следует -p, mysql интерпретирует опцию как значение, что она должна попросить в интерактивном режиме пароль и рассматривает аргумент отдельного пароля как имя DB.

Чтобы это работало, $user должен иметь разрешение войти в систему, отбросить таблицу, составить таблицу и вставить строки в ту таблицу, все как удаленный пользователь. MySQL разделяет удаленные и локальные полномочия для пользователей, таким образом, это - легкое прерывание для падения в. Поскольку, позволяя удаленному пользователю это много питания является угрозой безопасности, можно хотеть использовать SSL (--ssl* опции) с mysql. Иначе я не знаю, что позволил бы удаленному пользователю делать такие вещи.

3
27.01.2020, 22:07
  • 1
    +1: Это служит вполне хорошо, что я пытаюсь сделать.Спасибо! –  mico 12.07.2011, 13:46

Теги

Похожие вопросы