Я пытаюсь создать сценарий bash для изменения пароля root MySQL, ниже приведен текущий фрагмент кода, с которым я работаю:
#!/bin/sh
clear
echo "Enter the current password for the root mysql account."
read oldrootpass
echo "Enter a new password for the root mysql account."
read newrootpass
mysql -u root -p$oldrootpass -Bse 'UPDATE user SET password=PASSWORD("$newrootpass") WHERE User="root"'
Приведенный выше синтаксис для изменения пароля root может быть неправильным, но часть, на которой я застрял, генерирует однострочную команду для работы с mysql, если команда превышает 2 строки, то вводится приглашение MySQL, а команды MySQL в Сценарий bash выполняется после закрытия приглашения MySQL с помощью команды exit.
Я намерен собрать соответствующую информацию о пароле с помощью сценария bash, запустить одну команду для изменения пароля root и затем вернуться к сценарию bash, или приглашение bash, если сценарий завершился.
Используйте mysqladmin вместо выполнения запроса в mysql.
mysqladmin -u root -p'$oldrootpass' password '$newrootpass'
должно работать, но вам, возможно, придется немного поработать с кавычками.
Если вы спрашиваете, как запустить более одного оператора с одним mysql
команду, вы можете просто разделить их точкой с запятой:
$ mysql -e 'select 1; select 2'
+---+
| 1 |
+---+
| 1 |
+---+
+---+
| 2 |
+---+
| 2 |
+---+
или вы можете создать файл, содержащий операторы SQL, и запустить его:
$ mysql < change_password.sql