Pasar la salida de la llamada de metadatos a MySQL

Pasar la salida de la llamada de metadatos a MySQL

Referencia:Cómo pasar la contraseña a la línea de comando de MySQL

Quiero obtener los metadatos devueltos de una instancia AWS EC2 y establecer una nueva contraseña de MySQL basada en estos datos.

Necesito ayuda con el script que se ejecutará en el primer inicio.

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

mysql -u root -pOldPassword  
UPDATE mysql.user  

Ahora pase el ID de instancia y úselo para establecer una nueva contraseña para la raíz de MySQL.

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

FLUSH PRIVILEGES;

EXIT

Respuesta1

Bash no expande las variables entre comillas simples. Aparte de eso, puede ejecutar varias consultas SQL, o una sola si lo prefiere, utilizando el<<EOF...EOFconstrucción. El siguiente código funcionó para mí

#!/bin/bash                                                                                                                                 

newpass="newPassword"

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

Puede ejecutar el UPDATEcomando correctamente según su versión de MySQL. yo estaba usando5.6.35. En caso de que esté ejecutando MySQL5.7únicamente, utilice la siguiente UPDATEconsulta en lugar de la que se muestra arriba:

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

Puede encontrar más información en los documentos oficiales de MySQL: https://dev.mysql.com/doc/refman/5.7/en/update.html

información relacionada