MySQL에서 옵션의 기본값, 값을 요구하는 옵션, 그리고 '=' 기호가 어떻게 작동하는지 자세히 살펴보겠습니다.
옵션에 값 지정하기: '=' 기호의 역할
일반적인 관례에 따라 값을 할당하는 옵션의 긴 형식(long form)은 등호(=)를 사용하여 작성합니다. 아래와 같습니다:
mysql --host=tonfisk --user=jon
반면, 기본값이 없어 반드시 값을 지정해야 하는 옵션에는 등호를 생략할 수 있습니다. 즉, 다음과 같은 명령어도 유효합니다:
mysql --host tonfisk --user jon
위 두 경우 모두 mysql 클라이언트는 사용자 이름이 "jon"인 계정을 통해 "tonfisk"라는 호스트에서 실행 중인 MySQL 서버에 접속을 시도합니다.
그러나 이러한 유연한 동작 방식 때문에, 값을 요구하는 옵션에 값이 제공되지 않으면 때때로 문제가 발생할 수 있습니다.
실습 예제
사용자 jon으로 85.224.35.45 호스트에서 실행 중인 MySQL 서버에 접속하려면 다음 명령어를 실행합니다:
shell> mysql --host 85.224.35.45 --user jon
출력 결과
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 8.0.25 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
접속에 성공했다면, 다음 쿼리로 현재 접속 중인 사용자를 확인할 수 있습니다:
쿼리
mysql> SELECT CURRENT_USER();
출력 결과
+----------------+ | CURRENT_USER() | +----------------+ | jon@% | +----------------+ 1 row in set (0.00 sec)
값을 생략했을 때 발생하는 오류
값이 필요한 옵션에서 필수 값을 생략하면 오류가 발생합니다. 오류 메시지는 다음과 같이 나타납니다:
shell> mysql --host 85.224.35.45 –user
출력 결과
mysql: option '--user' requires an argument
위 경우 mysql은 명령줄에서 --user 옵션 뒤에 아무런 값이 없기 때문에 해당 옵션의 값을 찾지 못해 오류를 반환합니다.
마지막 옵션이 아닐 때의 예상치 못한 오류
문제는 값이 생략된 옵션이 명령줄의 마지막 옵션이 아닐 때 더욱 혼란스러워집니다. 이 경우 전혀 다른 형태의 오류가 발생합니다:
shell> mysql --host --user jon
출력 결과
ERROR 2005 (HY000): Unknown MySQL server host '--user' (1)
이 오류는 "--user"라는 문자열이 호스트 이름으로 잘못 해석되었기 때문입니다. mysql은 --host 옵션 바로 뒤에 나오는 "--user"를 호스트 값으로 간주하고, 실제 사용자 이름인 "jon"은 별도의 유효한 인수로 처리하지 않습니다.
따라서 값을 요구하는 옵션을 사용할 때는 등호(=)를 함께 사용하는 것이 이러한 혼란을 예방하는 가장 안전하고 권장되는 방법입니다.