Loading...
MySQL 9.5 Reference Manual 9.5의 6.2.5 Connecting to the Server Using URI-Like Strings or Key-Value Pairs의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 절에서는 MySQL Shell과 같은 클라이언트에서 MySQL 서버에 대한 연결을 설정하는 방법을 지정하기 위해 URI와 유사한(connection) 문자열 또는 키-값 쌍을 사용하는 방법을 설명합니다. mysql이나 mysqldump와 같은 클라이언트에서 커맨드 라인 옵션을 사용하여 연결을 설정하는 방법에 대한 정보는 Section 6.2.4, “Connecting to the MySQL Server Using Command Options”을 참조하십시오. 연결에 실패하는 경우의 추가 정보는 Section 8.2.22, “Troubleshooting Problems Connecting to MySQL”을 참조하십시오.
참고
“URI-like”라는 용어는 RFC 3986에 정의된 URI (uniform resource identifier) 구문과 유사하지만 동일하지 않은 connection-string 구문을 의미합니다.
다음 MySQL 클라이언트는 URI-like connection 문자열 또는 키-값 쌍을 사용하여 MySQL 서버에 연결하는 것을 지원합니다:
MySQL Shell
X DevAPI를 구현하는 MySQL Connector
이 절에서는 유효한 모든 URI-like 문자열 및 키-값 쌍 연결 파라미터를 문서화하며, 이들 중 다수는 커맨드 라인 옵션으로 지정되는 것과 유사합니다:
URI-like 문자열로 지정되는 파라미터는 [email protected]:3306/main-schema와 같은 구문을 사용합니다. 전체 구문은 Connecting Using URI-Like Connection Strings를 참조하십시오.
키-값 쌍으로 지정되는 파라미터는 {user:'myuser', host:'example.com', port:3306, schema:'main-schema'}와 같은 구문을 사용합니다. 전체 구문은 Connecting Using Key-Value Pairs를 참조하십시오.
연결 파라미터는 대소문자를 구분하지 않습니다. 각 파라미터는 지정되는 경우 한 번만 제공될 수 있습니다. 파라미터가 두 번 이상 지정되면 오류가 발생합니다.
이 절에서는 다음 주제를 다룹니다:
다음 설명에서는 MySQL에 대한 연결을 지정할 때 사용 가능한 파라미터를 설명합니다. 이들 파라미터는 베이스 URI-like 구문을 따르는 문자열(Connecting Using URI-Like Connection Strings 참조) 또는 키-값 쌍(Connecting Using Key-Value Pairs 참조)으로 제공할 수 있습니다.
scheme: 사용할 전송 프로토콜입니다.
X Protocol 연결에는 mysqlx를, classic MySQL protocol 연결에는 mysql을 사용하십시오. 프로토콜이 지정되지 않으면 서버가 프로토콜을 추측하려 시도합니다. DNS SRV를 지원하는 Connector는 mysqlx+srv 스킴을 사용할 수 있습니다(Connections Using DNS SRV Records 참조).
user: 인증 과정에 사용할 MySQL 사용자 계정입니다.
password: 인증 과정에 사용할 비밀번호입니다.
주의
연결 지정에 명시적인 비밀번호를 지정하는 것은 안전하지 않으며 권장되지 않습니다. 이후 설명에서 비밀번호에 대해 대화형 프롬프트를 발생시키는 방법을 보여줍니다.
host: 서버 인스턴스가 실행 중인 호스트입니다. 값은 호스트 이름, IPv4 주소, IPv6 주소가 될 수 있습니다. 호스트가 지정되지 않으면 기본값은 localhost입니다.
port: 대상 MySQL 서버가 연결을 기다리는 TCP/IP 네트워크 포트입니다.
포트가 지정되지 않으면 X Protocol 연결의 기본값은 33060이고 classic MySQL protocol 연결의 기본값은 3306입니다.
socket: 유닉스 소켓 파일의 경로 또는 Windows 네임드 파이프의 이름입니다. 값은 로컬 파일 경로입니다. URI-like 문자열에서는 퍼센트 인코딩을 사용하거나 경로를 괄호로 둘러싸서 인코딩해야 합니다. 괄호를 사용하면 / 디렉터리 구분 문자와 같은 문자를 퍼센트 인코딩할 필요가 없습니다. 예를 들어 유닉스 소켓 /tmp/mysql.sock을 사용하여 root@localhost로 연결하려면 경로를 퍼센트 인코딩을 사용하여 root@localhost?socket=%2Ftmp%2Fmysql.sock처럼 지정하거나, 괄호를 사용하여 root@localhost?socket=(/tmp/mysql.sock)처럼 지정합니다.
schema: 연결의 기본 데이터베이스입니다. 데이터베이스가 지정되지 않으면 연결에는 기본 데이터베이스가 없습니다.
유닉스에서 localhost 처리 방식은 전송 프로토콜 유형에 따라 다릅니다.
classic MySQL protocol을 사용하는 연결은 다른 MySQL 클라이언트와 동일한 방식으로 localhost를 처리하며, 이는 localhost가 소켓 기반 연결을 의미함을 뜻합니다. X Protocol을 사용하는 연결의 경우 localhost의 동작이 달라서 루프백 주소(예: IPv4 주소 127.0.0.1)를 나타내는 것으로 간주됩니다.
연결에 대한 옵션을 URI-like 문자열의 애트리뷰트로 ?attribute=value를 덧붙이거나 키-값 쌍으로 지정할 수 있습니다. 사용 가능한 옵션은 다음과 같습니다:
ssl-mode: 연결에 대해 원하는 보안 상태입니다. 허용되는 모드는 다음과 같습니다:
DISABLED
PREFERRED
REQUIRED
VERIFY_CA
VERIFY_IDENTITY
주의
VERIFY_CA와 VERIFY_IDENTITY는 기본값인 PREFERRED보다 더 나은 선택입니다. 이 모드는 man-in-the-middle 공격을 방지하는 데 도움이 되기 때문입니다.
이들 모드에 대한 정보는 --ssl-mode 옵션 설명과 Command Options for Encrypted Connections을 참조하십시오.
ssl-ca: PEM 포맷의 X.509 인증 기관 파일에 대한 경로입니다.
ssl-capath: PEM 포맷의 X.509 인증 기관 파일이 들어 있는 디렉터리에 대한 경로입니다.
ssl-cert: PEM 포맷의 X.509 인증서 파일에 대한 경로입니다.
ssl-cipher: TLSv1.2까지의 TLS 프로토콜을 사용하는 연결에 사용할 암호화 사이퍼입니다.
ssl-crl: PEM 포맷의 인증서 폐기 목록이 들어 있는 파일에 대한 경로입니다.
ssl-crlpath: PEM 포맷의 인증서 폐기 목록 파일이 들어 있는 디렉터리에 대한 경로입니다.
ssl-key: PEM 포맷의 X.509 키 파일에 대한 경로입니다.
tls-version: classic MySQL protocol 암호화 연결에 허용되는 TLS 프로토콜입니다. 이 옵션은 MySQL Shell에서만 지원됩니다.
tls-version(단수)의 값은 TLSv1.2,TLSv1.3과 같이 쉼표로 구분된 목록입니다. 자세한 내용은 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”를 참조하십시오.
이 옵션은 ssl-mode 옵션이 DISABLED로 설정되지 않은 경우에만 사용할 수 있습니다.
tls-versions: 암호화된 X Protocol 연결에 허용되는 TLS 프로토콜입니다.
tls-versions(복수)의 값은 [TLSv1.2,TLSv1.3]과 같은 배열입니다. 자세한 내용은 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”를 참조하십시오.
이 옵션은 ssl-mode 옵션이 DISABLED로 설정되지 않은 경우에만 사용할 수 있습니다.
tls-ciphersuites: 허용되는 TLS cipher suite입니다.
tls-ciphersuites의 값은 TLS Ciphersuites에 나열된 IANA cipher suite 이름 목록입니다. 자세한 내용은 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”를 참조하십시오.
이 옵션은 ssl-mode 옵션이 DISABLED로 설정되지 않은 경우에만 사용할 수 있습니다.
auth-method: 연결에 사용할 인증 방식입니다. 기본값은 AUTO이며, 이는 서버가 추측을 시도함을 의미합니다. 허용되는 방식은 다음과 같습니다:
AUTO
MYSQL41
SHA256_MEMORY
FROM_CAPABILITIES
FALLBACK
PLAIN
X Protocol 연결의 경우 설정된 모든 auth-method는 다음 인증 방식 시퀀스로 대체됩니다: MYSQL41, SHA256_MEMORY, PLAIN.
get-server-public-key: RSA 키 쌍 기반 비밀번호 교환에 필요한 공개 키를 서버로부터 요청합니다. SSL 모드가 DISABLED인 classic MySQL protocol을 통해 MySQL 8+ 서버에 연결할 때 사용합니다. 이 경우 프로토콜을 반드시 지정해야 합니다. 예를 들면 다음과 같습니다:1mysql://user@localhost:3306?get-server-public-key=true
이 옵션은 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”을 참조하십시오.
server-public-key-path: RSA 키 쌍 기반 비밀번호 교환에 대해 서버가 필요로 하는 공개 키의 클라이언트 측 복사본을 포함하는 PEM 포맷 파일의 경로 이름입니다. SSL 모드가 DISABLED인 classic MySQL protocol을 통해 MySQL 8+ 서버에 연결할 때 사용합니다.이 옵션은 sha256_password(deprecated) 또는 caching_sha2_password 인증 플러그인으로 인증하는 클라이언트에 적용됩니다. 이 중 어느 플러그인으로도 인증하지 않는 계정에는 이 옵션이 무시됩니다. 또한 클라이언트가 보안 연결을 사용하여 서버에 연결하는 경우와 같이 RSA 기반 비밀번호 교환을 사용하지 않는다면 이 옵션은 무시됩니다.
server-public-key-path=file_name이 주어지고 유효한 공개 키 파일을 지정하는 경우, get-server-public-key보다 우선합니다.
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”을 참조하십시오.
ssh: SSH 터널링을 사용하여 MySQL 서버 인스턴스에 접근하기 위한 SSH 서버에 대한 URI입니다. URI 포맷은 [user@]host[:port]입니다.
대상 MySQL 서버 인스턴스의 URI는 uri 옵션을 사용하여 지정합니다. MySQL Shell에서 SSH 터널 연결에 대한 정보는 Using an SSH Tunnel을 참조하십시오.
uri: ssh 옵션으로 지정된 서버로부터 SSH 터널을 통해 접근할 MySQL 서버 인스턴스에 대한 URI입니다. URI 포맷은 [scheme://][user@]host[:port]입니다. SSH 터널링에 사용할 MySQL 서버 연결을 지정할 때 베이스 연결 파라미터(scheme, user, host, port)를 사용하지 말고 uri 옵션만 사용하십시오.
ssh-password: SSH 서버에 대한 연결의 비밀번호입니다.
주의
연결 지정에 명시적인 비밀번호를 지정하는 것은 안전하지 않으며 권장되지 않습니다.
MySQL Shell은 필요 시 비밀번호를 대화형으로 입력받습니다.
ssh-config-file: SSH 서버에 대한 연결에 사용할 SSH 설정 파일입니다. 이 옵션이 지정되지 않은 경우에 사용할 기본 커스텀 파일은 MySQL Shell 설정 옵션 ssh.configFile로 설정할 수 있습니다.
ssh.configFile이 설정되지 않은 경우 기본값은 표준 SSH 설정 파일인 ~/.ssh/config입니다.
ssh-identity-file: SSH 서버에 대한 연결에 사용할 아이덴티티 파일입니다. 이 옵션이 지정되지 않은 경우 기본값은 SSH 에이전트(사용하는 경우)에 구성된 아이덴티티 파일 또는 SSH 설정 파일에 구성된 파일, 또는 SSH 설정 폴더(~/.ssh/id_rsa)의 표준 프라이빗 키 파일입니다.
ssh-identity-pass: ssh-identity-file 옵션으로 지정된 아이덴티티 파일에 대한 패스프레이즈입니다.
주의
연결 지정에 명시적인 비밀번호를 지정하는 것은 안전하지 않으며 권장되지 않습니다.
MySQL Shell은 필요 시 비밀번호를 대화형으로 입력받습니다.
connect-timeout: MySQL Shell과 같은 클라이언트가 응답하지 않는 MySQL 서버에 대해 연결을 시도하다가 중지할 때까지 기다리는 초 수를 설정하는 데 사용되는 정수 값입니다.
compression: 연결에 대해 압축을 요청하거나 비활성화하는 옵션입니다.
이 옵션에 사용할 수 있는 값은 다음과 같습니다:
required는 압축을 요청하며 서버가 압축을 지원하지 않으면 실패합니다.
preferred는 압축을 요청하며 지원되지 않으면 압축되지 않은 연결로 폴백합니다.
disabled는 압축되지 않은 연결을 요청하며 서버가 이를 허용하지 않으면 실패합니다.
X Protocol 연결의 기본값은 preferred이고, classic MySQL protocol 연결의 기본값은 disabled입니다. X Plugin 연결 압축 제어에 대한 정보는 Section 22.5.5, “Connection Compression with X Plugin”을 참조하십시오.
참고
서로 다른 MySQL 클라이언트는 연결 압축에 대한 지원을 서로 다르게 구현합니다. 자세한 내용은 사용 중인 클라이언트의 설명서를 참조하십시오.
compression-algorithms 및 compression-level: 이 옵션은 연결 압축에 대해 더욱 세밀한 제어를 제공하기 위해 MySQL Shell에서 사용할 수 있습니다. 이 옵션을 지정하여 연결에 사용할 압축 알고리즘과 그 알고리즘과 함께 사용할 숫자 압축 레벨을 선택할 수 있습니다. 또한 compression-algorithms를 compression 대신 사용하여 연결에 대해 압축을 요청할 수 있습니다. MySQL Shell의 연결 압축 제어에 대한 정보는 Using Compressed Connections을 참조하십시오.
connection-attributes: 애플리케이션 프로그램이 연결 시점에 서버에 전달하는 키-값 쌍을 제어합니다. 연결 애트리뷰트에 대한 일반적인 정보는 Section 29.12.9, “Performance Schema Connection Attribute Tables”을 참조하십시오. 애플리케이션은 일반적으로 기본 애트리뷰트 집합을 정의하며, 이 집합은 비활성화하거나 활성화할 수 있습니다. 예를 들면:
1mysqlx://user@host?connection-attributes 2mysqlx://user@host?connection-attributes=true 3mysqlx://user@host?connection-attributes=false
기본 동작은 기본 애트리뷰트 집합을 전송하는 것입니다. 애플리케이션은 기본 애트리뷰트에 더해 전달할 애트리뷰트를 지정할 수 있습니다. 추가 연결 애트리뷰트는 연결 문자열에서 connection-attributes 파라미터로 지정합니다.
connection-attributes 파라미터 값은 비어 있어야 합니다(이는 true를 지정하는 것과 동일함), 기본 애트리뷰트 집합을 활성화 또는 비활성화하기 위한 Boolean 값(true 또는 false), 또는 쉼표로 구분된 0개 이상의 key=value 지정자의 목록(기본 애트리뷰트 집합에 더해 전송할 값) 중 하나여야 합니다. 목록에서 key 값이 누락된 경우 빈 문자열으로 평가됩니다. 추가 예시는 다음과 같습니다:
1mysqlx://user@host?connection-attributes=[attr1=val1,attr2,attr3=] 2mysqlx://user@host?connection-attributes=[]
애플리케이션에서 정의한 애트리뷰트 이름은 _로 시작할 수 없습니다. 이러한 이름은 내부 애트리뷰트용으로 예약되어 있기 때문입니다.
MySQL Server에 대한 연결을 URI-like 문자열을 사용하여 지정할 수 있습니다. 이러한 문자열은 MySQL Shell에서 --uri 커맨드 옵션, MySQL Shell의 \connect 커맨드, 그리고 X DevAPI를 구현하는 MySQL Connector에서 사용할 수 있습니다.
참고
“URI-like”라는 용어는 RFC 3986에 정의된 URI (uniform resource identifier) 구문과 유사하지만 동일하지 않은 connection-string 구문을 의미합니다.
URI-like connection 문자열은 다음과 같은 구문을 가집니다:
1[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...]
주의
URI-like 문자열 요소에 포함된 예약 문자에는 퍼센트 인코딩을 사용해야 합니다. 예를 들어 @ 문자가 포함된 문자열을 지정하는 경우, 이 문자를 %40으로 대체해야 합니다. IPv6 주소에 zone ID를 포함하는 경우 구분자로 사용되는 % 문자를 %25로 대체해야 합니다.
URI-like connection 문자열에서 사용할 수 있는 파라미터는 Base Connection Parameters에 설명되어 있습니다.
MySQL Shell의 shell.parseUri() 및 shell.unparseUri() 메소드는 URI-like connection 문자열을 분해하고 다시 조립하는 데 사용할 수 있습니다. URI-like connection 문자열을 주면 shell.parseUri()는 문자열에서 발견된 각 요소를 포함하는 딕셔너리를 반환합니다.
shell.unparseUri()는 URI 구성 요소와 연결 옵션의 딕셔너리를 MySQL에 연결하기 위한 유효한 URI-like connection 문자열로 변환하며, 이는 MySQL Shell 또는 X DevAPI를 구현하는 MySQL Connector에서 사용할 수 있습니다.
URI-like 문자열에 비밀번호를 지정하지 않는 경우(권장되는 방식), 대화형 클라이언트는 비밀번호를 프롬프트합니다. 다음 예에서는 사용자 이름 _user_name_으로 URI-like 문자열을 지정하는 방법을 보여 줍니다. 각 경우에 비밀번호는 프롬프트를 통해 입력됩니다.
1mysqlx://user_name@localhost:33065
1mysql://user_name@localhost:3333
1mysqlx://[email protected]/ 2mysqlx://[email protected]:123 3mysqlx://user_name@[2001:db8:85a3:8d3:1319:8a2e:370:7348]
1mysqlx://user_name@/path%2Fto%2Fsocket.sock 2mysqlx://user_name@(/path/to/socket.sock)
1# use 'world' as the default database 2mysqlx://[email protected]/world 3 4# use 'world_x' as the default database, encoding _ as %5F 5mysqlx://[email protected]:33060/world%5Fx
key=value 쌍 또는 단일 key 로 주어집니다. 여러 값을 지정하려면 , 문자로 구분하십시오. key=value와 key 값을 혼합하는 것도 허용됩니다. 값은 리스트 타입이 될 수 있으며, 리스트 값은 나타나는 순서대로 정렬됩니다. 문자열은 퍼센트 인코딩을 사용하거나 괄호로 둘러싸야 합니다. 다음 예는 서로 동등합니다.1[email protected]?ssl-ca=%2Froot%2Fclientcert%2Fca-cert.pem&ssl-cert=%2Froot%2Fclientcert%2Fclient-cert.pem&ssl-key=%2Froot%2Fclientcert%2Fclient-key 2 3[email protected]?ssl-ca=(/root/clientcert/ca-cert.pem)&ssl-cert=(/root/clientcert/client-cert.pem)&ssl-key=(/root/clientcert/client-key)
1mysql://[email protected]:3306/world%5Fx?tls-versions=[TLSv1.2,TLSv1.3]&tls-ciphersuites=[TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256]
이전 예는 연결에 비밀번호가 필요하다고 가정합니다. 대화형 클라이언트에서는 지정된 사용자의 비밀번호가 로그인 프롬프트에서 요청됩니다. 사용자 계정에 비밀번호가 없거나(이는 안전하지 않으며 권장되지 않음), 유닉스 소켓 연결과 같이 소켓 peer-credential 인증이 사용되는 경우, connection 문자열에서 비밀번호를 제공하지 않으며 비밀번호 프롬프트가 필요 없음을 명시적으로 지정해야 합니다. 이를 위해 문자열에서 user_name 뒤에 :를 배치하지만 그 뒤에 비밀번호를 지정하지 않습니다. 예를 들면 다음과 같습니다:
1mysqlx://user_name:@localhost
MySQL Shell과 X DevAPI를 구현하는 일부 MySQL Connector에서는 구현 언어의 자연스러운 구조로 제공되는 키-값 쌍을 사용하여 MySQL Server에 대한 연결을 지정할 수 있습니다. 예를 들어 JavaScript에서는 JSON 객체로, Python에서는 딕셔너리로 키-값 쌍을 사용하여 연결 파라미터를 제공할 수 있습니다. 키-값 쌍이 어떻게 제공되든 개념은 동일합니다. 이 절에서 설명하는 키를 값에 할당하여 연결을 지정하는 것입니다. MySQL Shell의 shell.connect() 메소드, InnoDB Cluster의 dba.createCluster() 메소드, 그리고 X DevAPI를 구현하는 일부 MySQL Connector에서 키-값 쌍을 사용하여 연결을 지정할 수 있습니다.
일반적으로 키-값 쌍은 { 및 } 문자로 둘러싸이며, , 문자가 키-값 쌍 사이의 구분자로 사용됩니다. : 문자는 키와 값 사이에 사용됩니다. 문자열은(' 문자 등을 사용하여) 구분해야 합니다. URI-like connection 문자열과 달리 문자열을 퍼센트 인코딩할 필요는 없습니다.
키-값 쌍으로 지정된 연결은 다음과 같은 포맷을 가집니다:
1{ key: value, key: value, ...}
연결에서 키로 사용할 수 있는 파라미터는 Base Connection Parameters에 설명되어 있습니다.
키-값 쌍에서 비밀번호를 지정하지 않는 경우(권장되는 방식), 대화형 클라이언트는 비밀번호를 프롬프트합니다. 다음 예에서는 사용자 이름 'user_name'으로 키-값 쌍을 사용하여 연결을 지정하는 방법을 보여 줍니다. 각 경우에 비밀번호는 프롬프트를 통해 입력됩니다.
1{user:'user_name', host:'localhost', port:33065}
1{user:'user_name', host:'localhost', port:3333}
1{user:'user_name', host:'server.example.com'} 2{user:'user_name', host:198.51.100.14:123} 3{user:'user_name', host:[2001:db8:85a3:8d3:1319:8a2e:370:7348]}
1{user:'user_name', socket:'/path/to/socket/file'}
1{user:'user_name', host:'localhost', schema:'world'}
이전 예는 연결에 비밀번호가 필요하다고 가정합니다. 대화형 클라이언트에서는 지정된 사용자의 비밀번호가 로그인 프롬프트에서 요청됩니다. 사용자 계정에 비밀번호가 없거나(이는 안전하지 않으며 권장되지 않음), 유닉스 소켓 연결과 같이 소켓 peer-credential 인증이 사용되는 경우, 비밀번호를 제공하지 않으며 비밀번호 프롬프트가 필요 없음을 명시적으로 지정해야 합니다. 이를 위해 password 키 뒤에 ''을 사용하여 빈 문자열을 제공합니다. 예를 들면 다음과 같습니다:
1{user:'user_name', password:'', host:'localhost'}
6.2.4 Connecting to the MySQL Server Using Command Options
6.2.6 Connecting to the Server Using DNS SRV Records