Loading...
MySQL 9.5 Reference Manual 9.5의 6.2.3 Command Options for Connecting to the Server의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 섹션에서는 대부분의 MySQL 클라이언트 프로그램에서 지원하는 옵션에 대해 설명합니다. 이 옵션들은 클라이언트 프로그램이 서버에 커넥션을 설정하는 방식, 커넥션이 암호화되는지 여부, 커넥션이 압축되는지 여부를 제어합니다. 이러한 옵션은 커맨드 라인 또는 옵션 파일에서 지정할 수 있습니다.
이 섹션에서는 클라이언트 프로그램이 서버에 커넥션을 설정하는 방식을 제어하는 옵션에 대해 설명합니다. 이러한 옵션을 사용하는 방법에 대한 추가 정보와 예시는 Section 6.2.4, “Connecting to the MySQL Server Using Command Options”을 참조하십시오.
Table 6.4 Connection-Establishment Option Summary
| Option Name | Description |
|---|---|
| --default-auth | 사용할 인증 플러그인 |
| --host | MySQL 서버가 위치한 호스트 |
| --password | 서버에 연결할 때 사용할 패스워드 |
| --password1 | 서버에 연결할 때 사용할 첫 번째 다단계 인증 패스워드 |
| --password2 | 서버에 연결할 때 사용할 두 번째 다단계 인증 패스워드 |
| --password3 | 서버에 연결할 때 사용할 세 번째 다단계 인증 패스워드 |
| --pipe | 네임드 파이프를 사용하여 서버에 연결 (Windows 전용) |
| --plugin-dir | 플러그인이 설치된 디렉터리 |
| --port | 커넥션에 사용할 TCP/IP 포트 번호 |
| --protocol | 사용할 전송 프로토콜 |
| --shared-memory-base-name | 공유 메모리 커넥션을 위한 공유 메모리 이름 (Windows 전용) |
| --socket | 사용할 Unix 소켓 파일 또는 Windows 네임드 파이프 |
| --user | 서버에 연결할 때 사용할 MySQL 유저 이름 |
| Option Name | Description |
|---|
| Command-Line Format | --default-auth=plugin |
| Type | String |
사용할 클라이언트 측 인증 플러그인에 대한 힌트입니다. Section 8.2.17, “Pluggable Authentication”을 참조하십시오.
--host=host_name, -h host_name| Command-Line Format | --host=host_name |
| Type | String |
| Default Value | localhost |
MySQL 서버가 실행 중인 호스트입니다. 값은 호스트 이름, IPv4 주소 또는 IPv6 주소가 될 수 있습니다. 기본값은 localhost입니다.
--password[=pass_val], -p[pass_val]| Command-Line Format | --password[=password] |
| Type | String |
| Default Value | [none] |
서버에 연결하는 데 사용되는 MySQL 계정의 패스워드입니다. 패스워드 값은 선택 사항입니다. 지정하지 않으면 클라이언트 프로그램이 패스워드 입력을 요청합니다. 지정하는 경우, --password= 또는 -p와 그 뒤에 오는 패스워드 사이에 공백이 있으면 안 됩니다. 패스워드 옵션이 지정되지 않으면, 기본 동작은 패스워드를 보내지 않는 것입니다.
커맨드 라인에 패스워드를 지정하는 것은 보안상 안전하지 않은 것으로 간주해야 합니다. 커맨드 라인에 패스워드를 주는 것을 피하려면 옵션 파일을 사용하십시오. Section 8.1.2.1, “End-User Guidelines for Password Security”를 참조하십시오.
패스워드가 없음을 명시적으로 지정하고 클라이언트 프로그램이 패스워드를 요청하지 않도록 하려면 --skip-password 옵션을 사용하십시오.
| Command-Line Format | --password1[=password] |
| Type | String |
서버에 연결하는 데 사용되는 MySQL 계정의 다단계 인증 factor 1에 대한 패스워드입니다. 패스워드 값은 선택 사항입니다. 지정하지 않으면 클라이언트 프로그램이 패스워드 입력을 요청합니다. 지정하는 경우, --password1=과 그 뒤에 오는 패스워드 사이에 공백이 있어서는 안 됩니다. 패스워드 옵션이 지정되지 않으면 기본 동작은 패스워드를 보내지 않는 것입니다.
커맨드 라인에 패스워드를 지정하는 것은 보안상 안전하지 않은 것으로 간주해야 합니다. 커맨드 라인에 패스워드를 주는 것을 피하려면 옵션 파일을 사용하십시오. Section 8.1.2.1, “End-User Guidelines for Password Security”를 참조하십시오.
패스워드가 없음을 명시적으로 지정하고 클라이언트 프로그램이 패스워드를 요청하지 않도록 하려면 --skip-password1 옵션을 사용하십시오.
--password1과 --password는 동의어이며, --skip-password1과 --skip-password도 마찬가지입니다.
| Command-Line Format | --password2[=password] |
| Type | String |
서버에 연결하는 데 사용되는 MySQL 계정의 다단계 인증 factor 2에 대한 패스워드입니다. 이 옵션의 시맨틱은 --password1에 대한 시맨틱과 유사합니다. 자세한 내용은 해당 옵션 설명을 참조하십시오.
| Command-Line Format | --password3[=password] |
| Type | String |
서버에 연결하는 데 사용되는 MySQL 계정의 다단계 인증 factor 3에 대한 패스워드입니다. 이 옵션의 시맨틱은 --password1에 대한 시맨틱과 유사합니다. 자세한 내용은 해당 옵션 설명을 참조하십시오.
--pipe, -W| Command-Line Format | --pipe |
| Type | String |
Windows에서 네임드 파이프를 사용하여 서버에 연결합니다. 이 옵션은 서버가 네임드 파이프 커넥션을 지원하도록 named_pipe 시스템 변수를 활성화하여 시작된 경우에만 적용됩니다. 또한 커넥션을 수행하는 사용자는 named_pipe_full_access_group 시스템 변수에 의해 지정된 Windows 그룹의 구성원이어야 합니다.
| Command-Line Format | --plugin-dir=dir_name |
| Type | Directory name |
플러그인을 찾을 디렉터리입니다. 이 옵션은 --default-auth 옵션을 사용하여 인증 플러그인을 지정했지만 클라이언트 프로그램이 이를 찾지 못하는 경우 지정합니다. Section 8.2.17, “Pluggable Authentication”을 참조하십시오.
--port=port_num, -P port_num| Command-Line Format | --port=port_num |
| Type | Numeric |
| Default Value | 3306 |
TCP/IP 커넥션의 경우 사용할 포트 번호입니다. 기본 포트 번호는 3306입니다.
| Command-Line Format | --protocol=type |
| Type | String |
| Default Value | [see text] |
| Valid Values | TCP<br>SOCKET<br>PIPE<br>MEMORY |
이 옵션은 서버에 연결할 때 사용할 전송 프로토콜을 명시적으로 지정합니다. 이는 다른 커넥션 파라미터가 일반적으로 원하는 프로토콜이 아닌 다른 프로토콜을 사용하게 되는 경우에 유용합니다. 예를 들어 Unix에서 localhost로의 커넥션은 기본적으로 Unix 소켓 파일을 사용하여 이루어집니다:
1mysql --host=localhost
대신 TCP/IP 전송을 강제로 사용하려면 --protocol 옵션을 지정하십시오:
1mysql --host=localhost --protocol=TCP
아래 표는 허용되는 --protocol 옵션 값과 각 값에 적용 가능한 플랫폼을 보여줍니다. 값은 대소문자를 구분하지 않습니다.
--protocol Value | Transport Protocol Used | Applicable Platforms |
|---|---|---|
TCP | 로컬 또는 원격 서버에 대한 TCP/IP 전송 | All |
SOCKET | 로컬 서버에 대한 Unix 소켓 파일 전송 | Unix 및 Unix 계열 시스템 |
PIPE | 로컬 서버에 대한 네임드 파이프 전송 | Windows |
MEMORY | 로컬 서버에 대한 공유 메모리 전송 | Windows |
또한 Section 6.2.7, “Connection Transport Protocols”을 참조하십시오.
| Command-Line Format | --shared-memory-base-name=name |
| Platform Specific | Windows |
Windows에서 로컬 서버에 대한 공유 메모리를 사용하여 수행되는 커넥션에 사용할 공유 메모리 이름입니다. 기본값은 MYSQL입니다. 공유 메모리 이름은 대소문자를 구분합니다.
이 옵션은 서버가 공유 메모리 커넥션을 지원하도록 shared_memory 시스템 변수를 활성화하여 시작된 경우에만 적용됩니다.
--socket=path, -S path| Command-Line Format | --socket={file_name|pipe_name} |
| Type | String |
Unix에서 로컬 서버에 대한 네임드 파이프를 사용하여 수행되는 커넥션에 사용할 Unix 소켓 파일의 이름입니다. 기본 Unix 소켓 파일 이름은 /tmp/mysql.sock입니다.
Windows에서 로컬 서버에 대한 커넥션에 사용할 네임드 파이프의 이름입니다. 기본 Windows 파이프 이름은 MySQL입니다. 파이프 이름은 대소문자를 구분하지 않습니다.
Windows에서 이 옵션은 서버가 네임드 파이프 커넥션을 지원하도록 named_pipe 시스템 변수를 활성화하여 시작된 경우에만 적용됩니다. 또한 커넥션을 수행하는 사용자는 named_pipe_full_access_group 시스템 변수에 의해 지정된 Windows 그룹의 구성원이어야 합니다.
--user=user_name, -u user_name| Command-Line Format | --user=user_name |
| Type | String |
서버에 연결할 때 사용할 MySQL 계정의 유저 이름입니다. 기본 유저 이름은 Windows에서는 ODBC, Unix에서는 Unix 로그인 이름입니다.
이 섹션에서는 클라이언트 프로그램에서 서버에 대한 암호화 커넥션 사용 여부, 인증서 및 키 파일의 이름, 그리고 암호화 커넥션 지원과 관련된 기타 파라미터를 지정하는 옵션에 대해 설명합니다. 권장 사용 예제와 커넥션이 암호화되었는지 확인하는 방법에 대해서는 Section 8.3.1, “Configuring MySQL to Use Encrypted Connections”을 참조하십시오.
참고
이러한 옵션은 암호화가 적용되는 전송 프로토콜, 즉 TCP/IP 및 Unix 소켓 파일 커넥션에만 영향을 미칩니다. Section 6.2.7, “Connection Transport Protocols”을 참조하십시오.
MySQL C API에서 암호화 커넥션을 사용하는 방법에 대한 정보는 Support for Encrypted Connections를 참조하십시오.
Table 6.5 Connection-Encryption Option Summary
| Option Name | Description |
|---|---|
| --get-server-public-key | 서버에서 RSA 공개 키 요청 |
| --server-public-key-path | RSA 공개 키가 포함된 파일의 경로 이름 |
| --ssl-ca | 신뢰할 수 있는 SSL 인증 기관 목록이 포함된 파일 |
| --ssl-capath | 신뢰할 수 있는 SSL 인증 기관 인증서 파일이 포함된 디렉터리 |
| --ssl-cert | X.509 인증서가 포함된 파일 |
| --ssl-cipher | 커넥션 암호화에 허용되는 사이퍼 |
| --ssl-crl | 인증서 폐기 목록이 포함된 파일 |
| --ssl-crlpath | 인증서 폐기 목록 파일이 포함된 디렉터리 |
| --ssl-fips-mode | 클라이언트 측에서 FIPS 모드를 활성화할지 여부 |
| --ssl-key | X.509 키가 포함된 파일 |
| --ssl-mode | 서버에 대한 커넥션의 원하는 보안 상태 |
| --ssl-session-data | SSL 세션 데이터가 포함된 파일 |
| --ssl-session-data-continue-on-failed-reuse | 세션 재사용이 실패할 경우 커넥션을 설정할지 여부 |
| --tls-ciphersuites | 암호화 커넥션에 허용되는 TLSv1.3 사이퍼 슈트 |
| --tls-version | 암호화 커넥션에 허용되는 TLS 프로토콜 |
| Option Name | Description |
|---|
| Command-Line Format | --get-server-public-key |
| Type | Boolean |
RSA 키 페어 기반 패스워드 교환에 필요한 공개 키를 서버에 요청합니다. 이 옵션은 caching_sha2_password 인증 플러그인으로 인증하는 클라이언트에 적용됩니다. 해당 플러그인의 경우, 서버는 요청이 없는 한 공개 키를 보내지 않습니다. 이 옵션은 해당 플러그인으로 인증하지 않는 계정에는 무시됩니다. 또한 클라이언트가 보안 커넥션을 사용하여 서버에 연결하는 경우처럼 RSA 기반 패스워드 교환이 사용되지 않을 때도 무시됩니다.
만약 --server-public-key-path=file_name이 지정되고 유효한 공개 키 파일을 가리키면, --get-server-public-key보다 우선합니다.
caching_sha2_password 플러그인에 대한 정보는 Section 8.4.1.1, “Caching SHA-2 Pluggable Authentication”을 참조하십시오.
| Command-Line Format | --server-public-key-path=file_name |
| Type | File name |
PEM 포맷으로 된 파일 중에서 서버가 RSA 키 페어 기반 패스워드 교환에 필요로 하는 공개 키의 클라이언트 측 사본을 포함하는 파일의 경로 이름입니다. 이 옵션은 sha256_password(deprecated) 또는 caching_sha2_password 인증 플러그인으로 인증하는 클라이언트에 적용됩니다. 이 옵션은 이들 플러그인 중 하나로 인증하지 않는 계정에는 무시됩니다. 또한 클라이언트가 보안 커넥션을 사용하여 서버에 연결하는 경우와 같이 RSA 기반 패스워드 교환이 사용되지 않는 경우에도 무시됩니다.
만약 --server-public-key-path=file_name이 지정되고 유효한 공개 키 파일을 가리키면, --get-server-public-key보다 우선합니다.
이 옵션은 MySQL이 OpenSSL을 사용하여 빌드된 경우에만 사용할 수 있습니다.
sha256_password (deprecated) 및 caching_sha2_password 플러그인에 대한 정보는 Section 8.4.1.2, “SHA-256 Pluggable Authentication” 및 Section 8.4.1.1, “Caching SHA-2 Pluggable Authentication”을 참조하십시오.
| Command-Line Format | --ssl-ca=file_name |
| Type | File name |
PEM 포맷의 인증 기관(CA) 인증서 파일 경로 이름입니다. 이 파일에는 신뢰할 수 있는 SSL 인증 기관 목록이 들어 있습니다.
서버와 암호화 커넥션을 설정할 때 클라이언트가 서버 인증서를 인증하지 않도록 하려면 --ssl-ca나 --ssl-capath를 지정하지 마십시오. 서버는 여전히 클라이언트 계정에 대해 설정된 적용 가능한 요구 사항에 따라 클라이언트를 검증하며, 서버 측에서 지정된 ssl_ca 또는 ssl_capath 시스템 변수 값을 계속 사용합니다.
서버의 CA 파일을 지정하려면 ssl_ca 시스템 변수를 설정하십시오.
| Command-Line Format | --ssl-capath=dir_name |
| Type | Directory name |
PEM 포맷의 신뢰할 수 있는 SSL 인증 기관(CA) 인증서 파일이 포함된 디렉터리의 경로 이름입니다.
서버와 암호화 커넥션을 설정할 때 클라이언트가 서버 인증서를 인증하지 않도록 하려면 --ssl-ca나 --ssl-capath를 지정하지 마십시오. 서버는 여전히 클라이언트 계정에 대해 설정된 적용 가능한 요구 사항에 따라 클라이언트를 검증하며, 서버 측에서 지정된 ssl_ca 또는 ssl_capath 시스템 변수 값을 계속 사용합니다.
서버의 CA 디렉터리를 지정하려면 ssl_capath 시스템 변수를 설정하십시오.
| Command-Line Format | --ssl-cert=file_name |
| Type | File name |
PEM 포맷의 클라이언트 SSL 공개 키 인증서 파일 경로 이름입니다. 체인드 SSL 인증서를 지원합니다.
서버 SSL 공개 키 인증서 파일을 지정하려면 ssl_cert 시스템 변수를 설정하십시오.
| Command-Line Format | --ssl-cipher=name |
| Type | String |
TLSv1.2를 사용하는 커넥션에 허용되는 암호화 사이퍼 목록입니다. 목록에 있는 사이퍼 중 어떤 것도 지원되지 않으면, 이러한 TLS 프로토콜을 사용하는 암호화 커넥션은 동작하지 않습니다.
가장 높은 이식성을 위해 cipher_list 는 하나 이상의 사이퍼 이름을 콜론으로 구분한 목록이어야 합니다. 예:
1 --ssl-cipher=AES128-SHA 2 --ssl-cipher=DHE-RSA-AES128-GCM-SHA256:AES128-SHA
OpenSSL은 OpenSSL 문서 https://www.openssl.org/docs/manmaster/man1/ciphers.html에 설명된 사이퍼 지정 문법을 지원합니다.
MySQL이 지원하는 암호화 사이퍼에 대한 정보는 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”를 참조하십시오.
서버의 암호화 사이퍼를 지정하려면 ssl_cipher 시스템 변수를 설정하십시오.
| Command-Line Format | --ssl-crl=file_name |
| Type | File name |
PEM 포맷의 인증서 폐기 목록을 포함하는 파일의 경로 이름입니다.
--ssl-crl과 --ssl-crlpath 둘 다 지정되지 않으면, CA 경로에 인증서 폐기 목록이 포함되어 있더라도 CRL 체크는 수행되지 않습니다.
서버의 폐기 목록 파일을 지정하려면 ssl_crl 시스템 변수를 설정하십시오.
| Command-Line Format | --ssl-crlpath=dir_name |
| Type | Directory name |
PEM 포맷의 인증서 폐기 목록 파일이 들어 있는 디렉터리의 경로 이름입니다.
--ssl-crl과 --ssl-crlpath 둘 다 지정되지 않으면, CA 경로에 인증서 폐기 목록이 포함되어 있더라도 CRL 체크는 수행되지 않습니다.
서버의 폐기 목록 디렉터리를 지정하려면 ssl_crlpath 시스템 변수를 설정하십시오.
| Command-Line Format | --ssl-fips-mode={OFF|ON|STRICT} |
| Deprecated | Yes |
| Type | Enumeration |
| Default Value | OFF |
| Valid Values | OFF<br>ON<br>STRICT |
클라이언트 측에서 FIPS 모드를 활성화할지 여부를 제어합니다. --ssl-fips-mode 옵션은 암호화 커넥션을 설정하는 데 사용되는 다른 --ssl-xxx 옵션과 달리, 허용할 암호 연산을 제어하는 데 사용됩니다. Section 8.8, “FIPS Support”를 참조하십시오.
--ssl-fips-mode에 대해 허용되는 값은 다음과 같습니다:
OFF: FIPS 모드를 비활성화합니다.
ON: FIPS 모드를 활성화합니다.
STRICT: “strict” FIPS 모드를 활성화합니다.
참고
OpenSSL FIPS Object Module이 사용 가능하지 않으면, --ssl-fips-mode에 대해 허용되는 유일한 값은 OFF입니다. 이 경우 --ssl-fips-mode를 ON 또는 STRICT로 설정하면 클라이언트가 시작 시 경고를 출력하고 non-FIPS 모드로 동작하게 됩니다.
서버의 FIPS 모드를 지정하려면 ssl_fips_mode 시스템 변수를 설정하십시오.
| Command-Line Format | --ssl-key=file_name |
| Type | File name |
PEM 포맷의 클라이언트 SSL 개인 키 파일 경로 이름입니다. 더 나은 보안을 위해, 최소 2048비트 RSA 키 사이즈를 가진 인증서를 사용하십시오.
키 파일이 패스프레이즈로 보호되는 경우, 클라이언트 프로그램은 사용자에게 패스프레이즈 입력을 요청합니다. 패스워드는 대화형으로 제공해야 하며, 파일에 저장할 수 없습니다. 패스프레이즈가 올바르지 않으면, 프로그램은 키를 읽을 수 없는 경우처럼 계속 수행됩니다.
서버 SSL 개인 키 파일을 지정하려면 ssl_key 시스템 변수를 설정하십시오.
| Command-Line Format | --ssl-mode=mode |
| Type | Enumeration |
| Default Value | PREFERRED |
| Valid Values | DISABLED<br>PREFERRED<br>REQUIRED<br>VERIFY_CA<br>VERIFY_IDENTITY |
이 옵션은 서버에 대한 커넥션의 원하는 보안 상태를 지정합니다. 허용되는 모드 값은 다음과 같으며, 엄격도가 증가하는 순서대로 나열됩니다:
DISABLED: 암호화되지 않은 커넥션을 설정합니다.
PREFERRED: 서버가 암호화 커넥션을 지원하는 경우 암호화 커넥션을 설정하고, 암호화 커넥션을 설정할 수 없는 경우 암호화되지 않은 커넥션으로 대체합니다. 이는 --ssl-mode가 지정되지 않았을 때의 기본값입니다.
Unix 소켓 파일을 통한 커넥션은 PREFERRED 모드에서 암호화되지 않습니다. Unix 소켓 파일 커넥션에 대해 암호화를 강제하려면 REQUIRED 이상의 모드를 사용하십시오. (그러나 소켓 파일 전송은 기본적으로 보안성이 있으므로, 소켓 파일 커넥션을 암호화해도 보안이 더 향상되지는 않으며 CPU 부하만 증가시킵니다.)
REQUIRED: 서버가 암호화 커넥션을 지원하는 경우 암호화 커넥션을 설정합니다. 암호화 커넥션을 설정할 수 없는 경우 커넥션 시도는 실패합니다.
VERIFY_CA: REQUIRED와 유사하지만, 추가로 서버 인증 기관(CA) 인증서를 설정된 CA 인증서에 대해 검증합니다. 일치하는 유효한 CA 인증서를 찾지 못하면 커넥션 시도는 실패합니다.
VERIFY_IDENTITY: VERIFY_CA와 유사하지만, 추가로 클라이언트가 서버에 연결하기 위해 사용하는 호스트 이름을 클라이언트에 서버가 보내는 인증서에 있는 아이덴티티와 비교하여 호스트 이름 아이덴티티 검증을 수행합니다:
클라이언트가 OpenSSL 1.0.2 이상을 사용하는 경우, 클라이언트는 연결에 사용하는 호스트 이름이 서버 인증서의 Subject Alternative Name 값 또는 Common Name 값과 일치하는지 확인합니다. 호스트 이름 아이덴티티 검증은 Common Name에 와일드카드를 지정하는 인증서에서도 동작합니다.
그렇지 않은 경우, 클라이언트는 연결에 사용하는 호스트 이름이 서버 인증서의 Common Name 값과 일치하는지 확인합니다.
일치하지 않으면 커넥션은 실패합니다. 암호화 커넥션의 경우, 이 옵션은 man-in-the-middle 공격을 방지하는 데 도움이 됩니다.
참고
VERIFY_IDENTITY로 호스트 이름 아이덴티티 검증을 수행하는 것은 서버가 자동으로 생성하는 self-signed 인증서에서는 동작하지 않습니다(참조: Section 8.3.3.1, “Creating SSL and RSA Certificates and Keys using MySQL”). 이러한 self-signed 인증서에는 Common Name 값으로 서버 이름이 들어 있지 않습니다.
주의
기본 설정인 --ssl-mode=PREFERRED는 다른 기본 설정이 변경되지 않은 경우 암호화 커넥션을 생성합니다. 그러나 정교한 man-in-the-middle 공격을 방지하려면 클라이언트가 서버의 아이덴티티를 검증하는 것이 중요합니다. --ssl-mode=VERIFY_CA 및 --ssl-mode=VERIFY_IDENTITY 설정은 이러한 유형의 공격을 방지하는 데 기본 설정보다 더 나은 선택입니다. 이 설정 중 하나를 구현하려면, 먼저 서버의 CA 인증서가 해당 환경에서 이를 사용하는 모든 클라이언트에 신뢰할 수 있는 방식으로 제공될 수 있도록 해야 합니다. 그렇지 않으면 가용성 문제가 발생합니다. 이러한 이유로, 이들은 기본 설정이 아닙니다.
--ssl-mode 옵션은 CA 인증서 옵션과 다음과 같이 상호 작용합니다:
--ssl-mode가 명시적으로 설정되지 않은 경우, --ssl-ca 또는 --ssl-capath를 사용하면 --ssl-mode=VERIFY_CA가 암묵적으로 적용됩니다.
--ssl-mode 값이 VERIFY_CA 또는 VERIFY_IDENTITY인 경우, 서버에서 사용하는 CA 인증서와 일치하는 CA 인증서를 제공하기 위해 --ssl-ca 또는 --ssl-capath도 필요합니다.
VERIFY_CA 또는 VERIFY_IDENTITY 이외의 값으로 명시적인 --ssl-mode 옵션이 주어지고, 동시에 명시적인 --ssl-ca 또는 --ssl-capath 옵션이 주어지면, CA 인증서 옵션이 지정되었음에도 불구하고 서버 인증서에 대한 검증이 수행되지 않는다는 경고가 생성됩니다.
MySQL 계정에서 암호화 커넥션 사용을 강제하려면 CREATE USER를 사용하여 REQUIRE SSL 절이 있는 계정을 생성하거나, ALTER USER를 사용하여 기존 계정에 REQUIRE SSL 절을 추가하십시오. 이렇게 하면 해당 계정을 사용하는 클라이언트가 커넥션을 시도할 때, MySQL이 암호화 커넥션을 지원하고 암호화 커넥션을 설정할 수 없는 한 커넥션이 거부됩니다.
REQUIRE 절에는 REQUIRE SSL보다 더 엄격한 보안 요구 사항을 강제하는 데 사용할 수 있는 다른 암호화 관련 옵션도 허용됩니다. 다양한 REQUIRE 옵션을 사용하여 구성된 계정을 사용하는 클라이언트가 지정해야 하거나 지정해야만 하는 커맨드 옵션에 대한 자세한 내용은 CREATE USER SSL/TLS Options를 참조하십시오.
| Command-Line Format | --ssl-session-data=file_name |
| Type | File name |
세션 재사용을 위한 PEM 포맷의 클라이언트 SSL 세션 데이터 파일 경로 이름입니다.
--ssl-session-data 옵션과 함께 MySQL 클라이언트 프로그램을 실행하면, 클라이언트는 제공된 경우 파일에서 세션 데이터를 디시리얼라이즈한 다음 이를 사용하여 새 커넥션을 설정하려고 시도합니다. 파일을 제공했지만 세션이 재사용되지 않는 경우, --ssl-session-data-continue-on-failed-reuse 옵션을 클라이언트 프로그램 실행 시 커맨드 라인에 함께 지정하지 않았다면 커넥션은 실패합니다.
mysql 커맨드인 ssl_session_data_print는 세션 데이터 파일을 생성합니다(참조: Section 6.5.1.2, “mysql Client Commands”).
| Command-Line Format | --ssl-session-data-continue-on-failed-reuse |
| Type | Boolean |
| Default Value | OFF |
--ssl-session-data 커맨드 라인 옵션으로 지정된 세션 데이터를 재사용하려 했으나 실패한 커넥션을 대체하기 위해 새 커넥션을 시작할지 여부를 제어합니다. 기본적으로 --ssl-session-data-continue-on-failed-reuse 커맨드 라인 옵션은 off이며, 이 경우 세션 데이터가 제공되었으나 재사용되지 않으면 클라이언트 프로그램은 커넥트 실패를 반환합니다.
세션 재사용이 조용히 실패한 후 새롭고 관련 없는 커넥션이 열리도록 하려면 MySQL 클라이언트 프로그램을 실행할 때 --ssl-session-data와 --ssl-session-data-continue-on-failed-reuse 두 커맨드 라인 옵션을 모두 지정하십시오.
| Command-Line Format | --tls-ciphersuites=ciphersuite_list |
| Type | String |
| Default Value | empty string |
이 옵션은 TLSv1.3을 사용하는 암호화 커넥션에 대해 클라이언트가 허용하는 사이퍼 슈트를 지정합니다. 값은 0개 이상의 콜론으로 구분된 사이퍼 슈트 이름 목록입니다. 예:
1mysql --tls-ciphersuites="suite1:suite2:suite3"
이 옵션에서 지정할 수 있는 사이퍼 슈트는 MySQL을 컴파일할 때 사용된 SSL 라이브러리에 따라 달라집니다. 이 옵션이 설정되지 않으면, 클라이언트는 기본 사이퍼 슈트 집합을 허용합니다. 이 옵션이 empty string으로 설정되면 어떤 사이퍼 슈트도 활성화되지 않으며, 암호화 커넥션을 설정할 수 없습니다. 자세한 내용은 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”를 참조하십시오.
서버에서 허용되는 사이퍼 슈트를 지정하려면 tls_ciphersuites 시스템 변수를 설정하십시오.
| Command-Line Format | --tls-version=protocol_list |
| Type | String |
| Default Value | TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 (OpenSSL 1.1.1 이상)<br>TLSv1,TLSv1.1,TLSv1.2 (그 외의 경우) |
이 옵션은 암호화 커넥션에 대해 클라이언트가 허용하는 TLS 프로토콜을 지정합니다. 값은 하나 이상의 콤마로 구분된 프로토콜 버전 목록입니다. 예:
1mysql --tls-version="TLSv1.2,TLSv1.3"
이 옵션에서 지정할 수 있는 프로토콜은 MySQL을 컴파일할 때 사용된 SSL 라이브러리와 MySQL Server 릴리스에 따라 달라집니다.
주의
--tls-version 옵션을 지원하는 클라이언트(MySQL Shell 포함)는 프로토콜이 TLSv1 또는 TLSv1.1로 설정된 TLS/SSL 커넥션을 생성할 수 없습니다. 클라이언트가 이러한 프로토콜을 사용하여 연결을 시도하면, TCP 커넥션의 경우 커넥션이 실패하고 에러가 클라이언트에 반환됩니다. 소켓 커넥션의 경우 --ssl-mode가 REQUIRED로 설정되어 있으면 커넥션이 실패하고, 그렇지 않으면 TLS/SSL이 비활성화된 상태로 커넥션이 이루어집니다. 자세한 내용은 Removal of Support for the TLSv1 and TLSv1.1 Protocols를 참조하십시오.
TLSv1.3 프로토콜에 대한 지원은 MySQL Server가 OpenSSL 1.1.1 이상을 사용하여 컴파일된 경우에 MySQL Server에서 사용할 수 있습니다. 서버는 시작 시 OpenSSL 버전을 확인하며, 1.1.1보다 낮으면 TLSv1.3을 TLS 버전과 관련된 서버 시스템 변수(예: tls_version 시스템 변수)의 기본값에서 제거합니다.
허용되는 프로토콜은 목록에 “hole”이 생기지 않도록 선택해야 합니다. 예를 들어 다음 값에는 hole이 없습니다:
1--tls-version="TLSv1.2,TLSv1.3" 2--tls-version="TLSv1.3"
자세한 내용은 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”를 참조하십시오.
서버에서 허용되는 TLS 프로토콜을 지정하려면 tls_version 시스템 변수를 설정하십시오.
이 섹션에서는 클라이언트 프로그램이 서버에 대한 커넥션에서 압축 사용을 제어할 수 있도록 하는 옵션에 대해 설명합니다. 이러한 옵션을 사용하는 방법에 대한 추가 정보와 예시는 Section 6.2.8, “Connection Compression Control”을 참조하십시오.
Table 6.6 Connection-Compression Option Summary
| Option Name | Description |
|---|---|
| --compress | 클라이언트와 서버 간에 전송되는 모든 정보 압축 |
| --compression-algorithms | 서버에 대한 커넥션에 허용되는 압축 알고리즘 |
| --zstd-compression-level | zstd 압축을 사용하는 서버 커넥션의 압축 레벨 |
--compress, -C| Command-Line Format | --compress[={OFF|ON}] |
| Deprecated | Yes |
| Type | Boolean |
| Default Value | OFF |
가능한 경우 클라이언트와 서버 간에 전송되는 모든 정보를 압축합니다.
이 옵션은 deprecated입니다. 향후 MySQL 버전에서 제거될 예정입니다. Configuring Legacy Connection Compression을 참조하십시오.
| Command-Line Format | --compression-algorithms=value |
| Type | Set |
| Default Value | uncompressed |
| Valid Values | zlib<br>zstd<br>uncompressed |
서버에 대한 커넥션에 허용되는 압축 알고리즘입니다. 사용 가능한 알고리즘은 protocol_compression_algorithms 시스템 변수와 동일합니다. 기본값은 uncompressed입니다.
| Command-Line Format | --zstd-compression-level=# |
| Type | Integer |
zstd 압축 알고리즘을 사용하는 서버 커넥션에 사용할 압축 레벨입니다. 허용되는 레벨은 1에서 22까지이며, 값이 클수록 압축 레벨이 증가합니다. 기본 zstd 압축 레벨은 3입니다. 이 압축 레벨 설정은 zstd 압축을 사용하지 않는 커넥션에는 영향을 미치지 않습니다.
6.2.2 Specifying Program Options
6.2.4 Connecting to the MySQL Server Using Command Options