сценарий sh для выполнения mysql сценарий с вводом передачи

Я хотел бы выполнить mysql сценарий, где пользователя просят ввести пароль динамично из командной строки, если это возможно, с сообщением Enter your $root password. Однако это не работает как ожидалось. До сих пор я имею

mysql -u root -p CREATE DATABASE IF NOT EXISTS Test

кроме того, когда дб создается, как выйти из системы от mysql и возвратиться для избиения команд?

3
задан 23 September 2018 в 18:13

2 ответа

Согласно документам

mysql -u root -p --execute="SELECT User, Host FROM mysql.user"

подсказки для пароля, выполняет данную команду и возвращается к оболочке (никакой требуемый выход из системы).

Если Вы вместо этого хотите свою собственную подсказку, необходимо написать сценарий ее:

#!/usr/bin/env bash

echo "Enter pwd"
read pwd
mysql -u root -p$pwd --execute="SELECT User, Host FROM mysql.user"

Обратите внимание на то, что не должно быть никакого пространства между -p и $pwd потому что mysql затем рассматривает $pwd быть именем базы данных.

Я не рекомендовал бы это, потому что пароль затем показывают в открытом тексте в терминале тогда как mysql -p выставочные звездочки вместо этого.

7
ответ дан 1 December 2019 в 13:14

Сценарии запросов MySQL могут быть сделаны несколькими способами. Ответ PerlDuck уже затрагивает -e или --execute параметр. Иначе должен был бы использовать source команда от самого MySQL для запущения скрипта SQL:

$ mysql -u root -p -e 'source foo.sql'
Enter password:
+------+-------------+
| a    | b           |
+------+-------------+
|    1 | hello world |
+------+-------------+
$ cat foo.sql
use foo_db;
SELECT * FROM foo_tb;

Иначе должен перенаправить сценарий в mysql stdin:

$ sudo mysql -u root -p < foo.sql
Enter password:
a   b
1   hello world

Отметьте различие в форматировании в каждом случае. Конечно, можно также использовать здесь-документ или herestring для достижения тех же результатов, хотя использование текстового файла позволяет выполнять долгие запросы, в то время как здесь-документы и здесь-строки более полезны для умеренно кратких заявлений.

1
ответ дан 1 December 2019 в 13:14

Другие вопросы по тегам:

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