Altere a senha root do MySQL com script bash

Altere a senha root do MySQL com script bash

Estou tentando criar um script bash para alterar a senha root do MySQL. Abaixo está o trecho de código atual com o qual estou trabalhando:

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

A sintaxe acima para alterar a senha do root pode não estar correta, mas a parte em que estou preso é gerar um comando de uma linha para trabalhar com o mysql. Se o comando ultrapassar 2 linhas, o prompt do MySQL será inserido e os comandos do MySQL no bash são executados quando o prompt do MySQL é fechado com o comando 'exit'.

Minha intenção é coletar as informações de senha relevantes por meio do script bash, executar um único comando para alterar a senha root e depois retornar ao script bash ou ao prompt do bash se o script for finalizado.

Responder1

Se você está perguntando como executar mais de uma instrução com um único mysqlcomando, você pode simplesmente separá-las por ponto e vírgula:

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

ou você pode criar um arquivo contendo as instruções SQL e executá-lo:

$ mysql < change_password.sql

Responder2

Use mysqladmin em vez de executar uma consulta no mysql.

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

deve funcionar, mas talvez você precise mexer um pouco nas aspas.

informação relacionada