4.2.9 옵션의 디폴트 값을 가정 옵션 및 = 기호
일반적으로이 값을 할당하는 옵션의 긴 형식은 다음과 같이 등호 ( =
)로 작성됩니다.
shell> mysql --host=tonfisk --user=jon
값을 필요로하는 옵션 (즉, 기본값이없는 것)은 등호가 필요하지 않기 때문에 다음도 유효합니다.
shell> mysql --host tonfisk --user jon
두 경우 모두, mysql 클라이언트는 "tonfisk"라는 호스트에서 실행중인 MySQL 서버에 사용자 이름 "jon"계정을 사용하여 연결을 시도합니다.
이 작업을 위해 값을 상정 옵션에 값을 지정하지 않을 경우, 어떠한 경우 문제가 발생할 수 있습니다. 다음의 예를 보라. 사용자가 호스트 tonfisk
에서 실행중인 MySQL 서버에 사용자 jon
로 연결합니다.
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: 5.6.29 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)
mysql 명령 줄에서 --host
에 이은 임의의 문자열을 호스트 이름 상정하기 위해 --host --user
는 --host=--user
로 해석되고 클라이언트는 "--user"라는 호스트에서 실행중인 MySQL 서버에 연결하려고합니다.
기본값으로 옵션 값을 할당하는 경우에는 반드시 등호가 필요합니다. 그렇지 않으면 오류가 발생합니다. 예를 들어, MySQL 서버 --log-error
옵션은 기본값
를가집니다. 여기서 host_name
.errhost_name
은 MySQL이 실행중인 호스트의 이름입니다. 호스트 이름이 "tonfisk"이다 컴퓨터에서 MySQL을 실행하고 있다고합니다. 다음과 같이 mysqld_safe를 호출했을 경우를 생각합니다.
hell> mysqld_safe &
[1] 11699
shell> 080112 12:53:40 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.
080112 12:53:40 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
shell>
서버 종료 후 다음과 같이 다시 시작합니다.
shell> mysqld_safe --log-error &
[1] 11699
shell> 080112 12:53:40 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.
080112 12:53:40 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
shell>
명령 행에서 --log-error
는 외에 아무것도 이어 않고 자신의 기본값이 공급되기 때문에 결과는 동일합니다. ( &
문자는 운영 시스템에 MySQL을 백그라운드에서 실행하는 것을 지시합니다 .MySQL 자신은이를 무시합니다.) 여기서 오류를 my-errors.err
라는 파일에 기록하면 합니다. --log-error my-errors
에서 서버를 시작하려고 할 가능성이 있습니다 만, 이것은 다음과 같이 의도 한 효과를 가지지 않습니다.
shell> mysqld_safe --log-error my-errors &
[1] 31357
shell> 080111 22:53:31 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.
080111 22:53:32 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
080111 22:53:34 mysqld_safe mysqld from pid file /usr/local/mysql/var/tonfisk.pid ended
[1]+ Done ./mysqld_safe --log-error my-errors
서버는 /usr/local/mysql/var/tonfisk.err
을 오류 로그로 시작하려고했지만 종료했습니다. 이 파일의 마지막 몇 줄을 보면 이유를 알 수 있습니다.
shell> tail /usr/local/mysql/var/tonfisk.err
080111 22:53:32 InnoDB: Started; log sequence number 0 46409
/usr/local/mysql/libexec/mysqld: Too many arguments (first extra is 'my-errors').
Use --verbose --help to get a list of available options
080111 22:53:32 [ERROR] Aborting
080111 22:53:32 InnoDB: Starting shutdown...
080111 22:53:34 InnoDB: Shutdown completed; log sequence number 0 46409
080111 22:53:34 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete
080111 22:53:34 mysqld_safe mysqld from pid file /usr/local/mysql/var/tonfisk.pid ended
--log-error
옵션은 기본값을 공급하기 위해 다음과 같이 다른 값을 할당하려면 등호를 사용할 필요가 있습니다.
shell> mysqld_safe --log-error=my-errors &
[1] 31437
shell> 080111 22:54:15 mysqld_safe Logging to '/usr/local/mysql/var/my-errors.err'.
080111 22:54:15 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
shell>
이번에는 서버가 성공적으로 시작하고 오류를 파일 /usr/local/mysql/var/my-errors.err
에 기록하고 있습니다.
옵션 파일에서 옵션 값을 지정하는 경우에도 비슷한 문제가 발생할 수 있습니다. 예를 들어, 다음 내용의 my.cnf
파일을 생각합니다.
[mysql] host user
mysql 클라이언트가이 파일을 읽을 때 이러한 항목은 --host --user
또는 --host=--user
로 해석되어 다음과 같은 결과가됩니다.
shell> mysql
ERROR 2005 (HY000) : Unknown MySQL server host '--user'(1)
그러나 옵션 파일에서 등호는 상정되지 않습니다. my.cnf
파일이 아래와 같이되어 있다고합니다.
[mysql] user jon
이 경우 mysql을 시작하려고하면 다른 오류가 발생합니다.
shell> mysql
mysql : unknown option '--user jon'
host=tonfisk
대신 host tonfisk
와 옵션 파일에 작성하는 경우에도 같은 오류가 발생합니다. 대신에 등호를 사용하지 않으면 안됩니다.
[mysql] user = jon
이제 로그인이 성공합니다.
shell>mysql
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.6.29 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>SELECT USER();
+---------------+ | USER() | +---------------+ | jon@localhost | +---------------+ 1 row in set (0.00 sec)
이것은 명령 행에서의 동작과 동일하지 않습니다. 명령 행에서 등호는 필요하지 않습니다.
shell>mysql --user jon --host tonfisk
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.6.29 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>SELECT USER();
+---------------+ | USER() | +---------------+ | jon@tonfisk | +---------------+ 1 row in set (0.00 sec)
MySQL 5.6에서는 옵션 파일에 값을 필요로하는 옵션을 값없이 지정하면 서버가 오류로 중지합니다. my.cnf
에 다음의 내용이 포함된다고합니다.
[mysqld] log_error relay_log relay_log_index
이것은 다음과 같이 서버가 시작에 실패합니다.
shell> mysqld_safe &
090514 09:48:39 mysqld_safe Logging to '/home/jon/bin/mysql/var/tonfisk.err'.
090514 09:48:39 mysqld_safe Starting mysqld daemon with databases from /home/jon/bin/mysql/var
090514 09:48:39 mysqld_safe mysqld from pid file /home/jon/bin/mysql/var/tonfisk.pid ended
--log-error
옵션은 인수를 필요로하지 않습니다. 그러나 오류 로그 (지정된 값이 없기 때문에 기본
합니다)에 나타낸 바와 같이, datadir
/ hostname
.err--relay-log
옵션은 필요합니다.
shell> tail -n 3 ../var/tonfisk.err
090514 09:48:39 mysqld_safe Starting mysqld daemon with databases from /home/jon/bin/mysql/var
090514 9:48:39 [ERROR] /home/jon/bin/mysql/libexec/mysqld: option '--relay-log' requires an argument
090514 9:48:39 [ERROR] Aborting
이것은 이전의 동작에서 변경되어 있습니다. 이전 서버는 my.cnf
파일의 마지막 두 줄을 --relay-log=relay_log_index
해석 "relay_log_index"를 기반 이름으로 릴레이 로그 파일을 만들었습니다. (Bug # 25192)