• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 1. MySQL 프로그램 개요
    2. MySQL 프로그램 사용
    1. MySQL 프로그램 시작
    2. MySQL 서버에 연결
    3. 프로그램 옵션 지정
    4. 명령행 옵션 사용
    5. 프로그램 옵션 수식
    6. 옵션 파일 사용
    7. 옵션 파일의 처리에 영향을주는 명령 행 옵션
    8. 프로그램 변수의 설정에 옵션 사용
    9. 옵션의 디폴트 값을 가정 옵션 및 = 기호
    10. 환경 변수 설정
    3. MySQL 서버와 서버 시작 프로그램
    4. 설치 관련 프로그램
    5. 클라이언트 프로그램
    6. MySQL 관리 프로그램 및 유틸리티 프로그램
    7. MySQL 프로그램 개발 유틸리티
    8. 기타 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

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 .err 를가집니다. 여기서 host_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)

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved