AWS EC2 인스턴스에서 반환된 메타데이터를 가져오고 이 데이터를 기반으로 새 mysql 비밀번호를 설정하고 싶습니다.
처음 부팅할 때 실행되는 스크립트에 대한 도움이 필요합니다.
#!/bin/bash
output=$(ec2metadata --instance-id); Used for storing EC2 ID.
mysql -u root -pOldPassword
UPDATE mysql.user
이제 인스턴스 ID를 전달하고 이를 사용하여 mysql 루트에 대한 새 비밀번호를 설정하십시오.
SET authentication_string = PASSWORD('$output'), password_expired = 'N'
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
EXIT
답변1
Bash는 작은따옴표로 묶인 변수를 확장하지 않습니다. 이 외에도 여러 SQL 쿼리를 실행할 수 있으며 원하는 경우 다음 명령을 사용하여 단일 SQL 쿼리를 실행할 수 있습니다.<<EOF...EOF
세워. 다음 코드는 나를 위해 일했습니다
#!/bin/bash
newpass="newPassword"
mysql -u root -poldPassword <<EOF
UPDATE mysql.user SET Password=PASSWORD("$newpass") WHERE User='root';
FLUSH PRIVILEGES;
QUIT
EOF
UPDATE
MySQL 버전에 따라 올바른 명령을 실행할 수 있습니다 . 나는 사용하고있다5.6.35. MySQL을 실행 중인 경우5.7UPDATE
위에 표시된 쿼리 대신 다음 쿼리를 사용하세요 .
UPDATE mysql.user SET authentication_string=PASSWORD("$newpass") WHERE User='root';
공식 MySQL 문서에서 자세한 내용을 확인할 수 있습니다. https://dev.mysql.com/doc/refman/5.7/en/update.html