Altere a senha de root do MySQL com o script bash

3

Estou tentando criar um script bash para alterar a senha de root do MySQL. Abaixo está o trecho atual do código 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 está gerando um comando de uma linha para trabalhar com o mysql, se o comando passar por 2 linhas, o prompt do MySQL será inserido eo MySQL comandos no script bash são executados uma vez que o prompt do MySQL foi fechado com o comando 'exit'.

Minha intenção é reunir as informações de senha relevantes por meio do script bash, executar um único comando para alterar a senha raiz e, em seguida, retornar ao script bash, ou o prompt bash é o script que terminou.

    
por Jim 15.10.2015 / 13:30

2 respostas

4

Se você estiver perguntando como executar mais de uma instrução com um único comando mysql , basta 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
    
por 15.10.2015 / 13:36
7

Use mysqladmin em vez de executar uma consulta no mysql.

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

deve funcionar, mas você pode precisar mexer um pouco nas citações.

    
por 12.11.2015 / 19:55

Tags