Bash 스크립트를 사용하여 MySQL 루트 비밀번호 변경

Bash 스크립트를 사용하여 MySQL 루트 비밀번호 변경

MySQL 루트 비밀번호를 변경하기 위해 bash 스크립트를 생성하려고 합니다. 아래는 제가 작업 중인 현재 코드 조각입니다.

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

루트 비밀번호를 변경하기 위한 위의 구문은 정확하지 않을 수 있지만 제가 막힌 부분은 mysql에서 작동하기 위한 한 줄 명령을 생성하는 것입니다. 명령이 2줄을 넘으면 MySQL 프롬프트가 입력되고 MySQL 명령이 bash 스크립트는 'exit' 명령으로 MySQL 프롬프트가 닫히면 실행됩니다.

내 의도는 bash 스크립트를 통해 관련 비밀번호 정보를 수집하고 단일 명령을 실행하여 루트 비밀번호를 변경한 다음 bash 스크립트로 돌아가거나 bash 프롬프트가 스크립트가 종료되는 것입니다.

답변1

단일 명령으로 두 개 이상의 명령문을 실행하는 방법을 묻는 경우 mysql간단히 세미콜론으로 구분할 수 있습니다.

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

또는 SQL 문이 포함된 파일을 만들고 다음을 실행할 수 있습니다.

$ mysql < change_password.sql

답변2

mysql에서 쿼리를 실행하는 대신 mysqladmin을 사용하십시오.

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

작동해야 하지만 따옴표를 약간 엉망으로 만들어야 할 수도 있습니다.

관련 정보