Passe a saída da chamada de metadados para o MySQL

0

Referência: Como passar a senha para a linha de comando do mysql

Eu quero pegar os metadados retornados de uma instância do AWS EC2 e definir uma nova senha do mysql com base nesses dados.

Preciso de ajuda com o script que será executado como primeiro boot.

#!/bin/bash  
output=$(ec2metadata --instance-id); Used for storing EC2 ID.   

mysql -u root -pOldPassword  
UPDATE mysql.user  

Agora passe instance-id e use-o para definir uma nova senha para a raiz do mysql.

SET authentication_string = PASSWORD('$output'), password_expired = 'N'
WHERE User = 'root' AND Host = 'localhost';

FLUSH PRIVILEGES;

EXIT
    
por drew_satellite 25.05.2017 / 18:00

1 resposta

0

Bash não expande variáveis entre aspas simples. Além disso, você pode executar várias consultas SQL ou uma única, se preferir, usando a construção <<EOF...EOF . O código abaixo funcionou para mim

#!/bin/bash                                                                                                                                 

newpass="newPassword"

mysql -u root -poldPassword <<EOF                                                                                                                  
UPDATE mysql.user SET Password=PASSWORD("$newpass") WHERE User='root';                                                                      
FLUSH PRIVILEGES;                                                                                                                           
QUIT                                                                                                                                        
EOF

Você pode executar o comando UPDATE corretamente de acordo com sua versão do MySQL. Eu estava usando 5.6.35 . Caso você esteja executando apenas o MySQL 5.7 , use a seguinte consulta UPDATE em vez da mostrada acima:

UPDATE mysql.user SET authentication_string=PASSWORD("$newpass") WHERE User='root';

Você pode encontrar mais informações nos documentos oficiais do MySQL: link

Espero que tenha ajudado

    
por 28.05.2017 / 11:47