MySQL CLI에서 DROP USER IF EXISTS 구문 오류가 발생했습니다.

MySQL CLI에서 DROP USER IF EXISTS 구문 오류가 발생했습니다.

저는 EditLine 래퍼를 사용하여 Bash 및 MySQL Ver 14.14 Distrib 5.7.21과 Linux(x86_64)에서 Ubuntu 16.04를 사용하고 있습니다.

명령줄에서 직접 웹앱(WordPress)용 DB 스택을 생성하려고 하는데, 여기서 제가 아는 가장 좋은 방법과 제가 겪고 있는 문제를 공유하고 있습니다(답변이 더 나은 방법을 제공할 수 있음).

다음 MySQL CLI 코드를 실행해 보았습니다. 여기에서 권한이 부여된 전체 권한 사용자 + 동일한 이름의 데이터베이스 인스턴스를 생성했습니다.

cat <<-EOF | mysql -u root -p"$dbrootp_1"
    DROP USER IF EXISTS "$domain"@"localhost";
    DROP DATABASE IF EXISTS "$domain";
    CREATE USER "$domain"@"localhost" IDENTIFIED BY "$dbuserp_1";
    CREATE DATABASE "$domain";
    GRANT ALL PRIVILEGES ON "$domain".* TO "$domain"@"localhost";
EOF

실행하면 다음 오류가 출력됩니다.

2행의 오류 1064(42000): SQL 구문에 오류가 있습니다.

줄 1 "example.com" 근처에서 사용할 올바른 구문은 MySQL 서버 버전 설명서를 확인하세요.

이 오류에 대해 혼란스럽습니다. 문제가 라인 1에 있습니까, 아니면 2에 있습니까? 여기서 구문 오류는 무엇입니까? 변수 확장을 사용해야 합니다.

답변을 기반으로 업데이트

사용자l0b0, 보여주신 ${x}대안을 사용해 보았지만 "$x"불행하게도 다음과 같은 오류가 출력됩니다.

1행의 오류 1064(42000): SQL 구문이 잘못되었습니다. 1행의 "-law.co.il@localhost" 근처에서 사용할 올바른 구문은 MySQL 서버 버전 설명서를 확인하세요.

mysql에 데이터를 파이핑하지 않고 Cat 출력:

DROP USER IF EXISTS example.com@localhost;
DROP DATABASE IF EXISTS example.com;
CREATE USER example.com@localhost IDENTIFIED BY MYPASSWORD;
CREATE DATABASE example.com;
GRANT ALL PRIVILEGES ON example.com.* TO example.com@localhost;

답변1

@jordanm이 지적했듯이,여기에 파일인용문은 문법이 아닌 문자 그대로입니다. 그래서 당신이 원하는

mysql -u root -p"$dbrootp_1" <<-EOF
    DROP USER IF EXISTS ${domain}@localhost;
    DROP DATABASE IF EXISTS ${domain};
    CREATE USER ${domain}@localhost IDENTIFIED BY ${dbuserp_1};
    CREATE DATABASE ${domain};
    GRANT ALL PRIVILEGES ON ${domain}.* TO ${domain}@localhost;
EOF

$domain또는 특수 문자가 포함된 경우 $dbuserp_1해당 문자를 따옴표로 묶어야 합니다.백틱:

mysql -u root -p"$dbrootp_1" <<-EOF
    DROP USER IF EXISTS \`${domain}\`@localhost;
    DROP DATABASE IF EXISTS \`${domain}\`;
    CREATE USER \`${domain}\`@localhost IDENTIFIED BY \`${dbuserp_1}\`;
    CREATE DATABASE `${domain}`;
    GRANT ALL PRIVILEGES ON \`${domain}\`.* TO \`${domain}\`@localhost;
EOF

관련 정보