Назад | Перейти на главную страницу

Измените пароль 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, если сценарий завершился.

Используйте 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