Cambiar la contraseña de root de MySQL con un script bash

Cambiar la contraseña de root de MySQL con un script bash

Estoy intentando crear un script bash para cambiar la contraseña raíz de MySQL. A continuación se muestra el fragmento de código actual con el que estoy trabajando:

#!/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"'

La sintaxis anterior para cambiar la contraseña de root puede no ser correcta, pero la parte en la que estoy atascado es generar un comando de una línea para trabajar con mysql, si el comando supera las 2 líneas, entonces se ingresa el indicador de MySQL y los comandos de MySQL en el El script bash se ejecuta una vez que el indicador de MySQL se ha cerrado con el comando 'salir'.

Mi intención es recopilar la información de contraseña relevante a través del script bash, ejecutar un solo comando para cambiar la contraseña de root y luego regresar al script bash, o al indicador bash si el script ha finalizado.

Respuesta1

Si pregunta cómo ejecutar más de una declaración con un solo mysqlcomando, puede simplemente separarlas con punto y coma:

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

o puede crear un archivo que contenga las declaraciones SQL y ejecutarlo:

$ mysql < change_password.sql

Respuesta2

Utilice mysqladmin en lugar de ejecutar una consulta en mysql.

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

Debería funcionar, pero es posible que tengas que modificar un poco las comillas.

información relacionada