Изменить пароль root для MySQL с помощью скрипта bash

Изменить пароль root для MySQL с помощью скрипта bash

Я пытаюсь создать 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, если скрипт завершится.

решение1

Если вы спрашиваете, как выполнить несколько операторов с помощью одной mysqlкоманды, вы можете просто разделить их точкой с запятой:

$ mysql -e 'select 1; select 2'
+---+
| 1 |
+---+
| 1 |
+---+
+---+
| 2 |
+---+
| 2 |
+---+

или вы можете создать файл, содержащий операторы SQL, и запустить его:

$ mysql < change_password.sql

решение2

Используйте mysqladmin вместо запуска запроса в mysql.

mysqladmin -u root -p'$oldrootpass' password '$newrootpass'

Должно сработать, но, возможно, придется немного повозиться с кавычками.

Связанный контент