Loading...
MySQL 9.5 Reference Manual 9.5의 6.2.4 Connecting to the MySQL Server Using Command Options의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 절에서는 mysql 또는 mysqldump 같은 클라이언트가 MySQL 서버에 대한 연결을 설정하는 방법을 지정하기 위해 명령줄 옵션을 사용하는 방법을 설명합니다. MySQL Shell과 같은 클라이언트에서 URI 유사 연결 문자열 또는 키-값 쌍을 사용하여 연결을 설정하는 방법에 대한 정보는 Section 6.2.5, “Connecting to the Server Using URI-Like Strings or Key-Value Pairs”를 참고하십시오. 연결할 수 없는 경우의 추가 정보는 Section 8.2.22, “Troubleshooting Problems Connecting to MySQL”를 참고하십시오.
클라이언트 프로그램이 MySQL 서버에 연결하려면, 서버가 실행 중인 호스트의 이름과 MySQL 계정의 사용자 이름 및 비밀번호와 같은 적절한 연결 파라미터를 사용해야 합니다. 각 연결 파라미터에는 기본값이 있지만, 필요하다면 명령줄이나 옵션 파일에 지정된 프로그램 옵션을 사용하여 기본값을 재정의할 수 있습니다.
여기의 예제는 mysql 클라이언트 프로그램을 사용하지만, 원리는 mysqldump, mysqladmin, mysqlshow 등의 다른 클라이언트에도 동일하게 적용됩니다.
다음 명령은 어떤 명시적인 연결 파라미터도 지정하지 않고 mysql을 실행합니다:
1mysql
파라미터 옵션이 없으므로 기본값이 적용됩니다:
기본 호스트 이름은 localhost입니다. Unix에서는 이 값이 이후에 설명하는 특수한 의미를 가집니다.
기본 사용자 이름은 Windows에서는 ODBC, Unix에서는 Unix 로그인 이름입니다.
--password 또는 -p가 주어지지 않았기 때문에 비밀번호는 전송되지 않습니다.
mysql의 경우, 첫 번째 논옵션 인수는 기본 데이터베이스의 이름으로 간주됩니다. 그런 인수가 없으므로 mysql은 기본 데이터베이스를 선택하지 않습니다.
호스트 이름과 사용자 이름을 명시적으로 지정하고 비밀번호까지 지정하려면, 명령줄에 적절한 옵션을 제공합니다. 기본 데이터베이스를 선택하려면 database-name 인수를 추가합니다. 예:
1mysql --host=localhost --user=myname --password=password mydb 2mysql -h localhost -u myname -ppassword mydb
비밀번호 옵션의 경우, 비밀번호 값은 선택 사항입니다:
--password 또는 -p 옵션을 사용하면서 비밀번호 값을 지정하는 경우, --password= 또는 -p와 그 뒤에 오는 비밀번호 사이에는 공백이 없어야 합니다.
--password 또는 -p를 사용하지만 비밀번호 값을 지정하지 않으면, 클라이언트 프로그램은 비밀번호를 입력하라는 프롬프트를 표시합니다. 비밀번호는 입력하는 동안 화면에 표시되지 않습니다. 이는 명령줄에 비밀번호를 주는 것보다 더 안전합니다. 명령줄에 비밀번호를 주면, 다른 사용자가 ps 같은 명령을 실행하여 비밀번호가 포함된 라인을 볼 수 있기 때문입니다. 자세한 내용은 Section 8.1.2.1, “End-User Guidelines for Password Security”를 참고하십시오.
비밀번호가 없으며 클라이언트 프로그램이 비밀번호 프롬프트를 표시하지 않도록 명시적으로 지정하려면 --skip-password 옵션을 사용하십시오.
앞에서 언급했듯이 명령줄에 비밀번호 값을 포함시키는 것은 보안 위험입니다. 이 위험을 피하려면, --password 또는 -p 옵션 뒤에 아무 비밀번호 값도 주지 마십시오:
1mysql --host=localhost --user=myname --password mydb 2mysql -h localhost -u myname -p mydb
--password 또는 -p 옵션을 비밀번호 값 없이 주면, 클라이언트 프로그램은 프롬프트를 출력하고 비밀번호 입력을 기다립니다. (이 예제에서 mydb는 앞의 비밀번호 옵션과 공백으로 구분되어 있기 때문에 비밀번호로 해석되지 않습니다.)
일부 시스템에서는, MySQL이 비밀번호 입력을 위한 프롬프트를 표시하는 데 사용하는 라이브러리 루틴이 비밀번호 길이를 자동으로 8자로 제한합니다. 이 제한은 MySQL이 아니라 시스템 라이브러리의 특성입니다. 내부적으로 MySQL은 비밀번호 길이에 대한 제한이 없습니다.
이러한 제한이 있는 시스템에서 이 문제를 우회하려면, 옵션 파일에 비밀번호를 지정하십시오( Section 6.2.2.2, “Using Option Files” 참조). 또 다른 우회 방법은 MySQL 비밀번호를 8자 이하의 값으로 변경하는 것이지만, 비밀번호가 짧을수록 보안성이 떨어진다는 단점이 있습니다.
클라이언트 프로그램은 다음과 같이 어떤 유형의 연결을 만들지 결정합니다:
호스트가 지정되지 않았거나 localhost인 경우, 로컬 호스트로의 연결이 발생합니다:
Windows에서는, 서버가 공유 메모리 연결을 지원하도록 shared_memory 시스템 변수를 사용하여 시작된 경우, 클라이언트는 공유 메모리를 사용해 연결합니다.
Unix에서는, MySQL 프로그램이 호스트 이름 localhost를 다른 네트워크 기반 프로그램에서 기대하는 것과는 다를 수 있는 특수한 방식으로 처리합니다. 즉, 클라이언트는 Unix 소켓 파일을 사용해 연결합니다. --socket 옵션 또는 MYSQL_UNIX_PORT 환경 변수를 사용하여 소켓 이름을 지정할 수 있습니다.
Windows에서 host가 .(period)이거나, TCP/IP가 활성화되어 있지 않고 --socket이 지정되지 않았거나 호스트가 비어 있는 경우, 서버가 명명 파이프 연결을 지원하도록 named_pipe 시스템 변수를 사용하여 시작된 경우에 한해, 클라이언트는 명명 파이프를 사용해 연결합니다. 명명 파이프 연결이 지원되지 않거나 연결을 시도하는 사용자가 named_pipe_full_access_group 시스템 변수에 지정된 Windows 그룹의 구성원이 아닌 경우, 오류가 발생합니다.
그 밖의 경우, 연결은 TCP/IP를 사용합니다.
--protocol 옵션을 사용하면, 다른 옵션이 일반적으로 다른 프로토콜을 사용하도록 하는 경우에도 특정 전송 프로토콜을 사용할 수 있습니다. 즉, --protocol은 전송 프로토콜을 명시적으로 지정하며, localhost에 대해서도 앞의 규칙을 무시하고 이를 우선합니다.
선택된 전송 프로토콜과 관련 있는 연결 옵션만 사용되거나 검사되며, 다른 연결 옵션은 무시됩니다. 예를 들어, Unix에서 --host=localhost를 사용하면, --port 또는 -P 옵션으로 TCP/IP 포트 번호를 지정하더라도, 클라이언트는 Unix 소켓 파일을 사용하여 로컬 서버에 연결을 시도합니다.
클라이언트가 로컬 서버에 대해 TCP/IP 연결을 만들도록 보장하려면, --host 또는 -h를 사용하여 호스트 이름 값을 localhost 대신 127.0.0.1이나 로컬 서버의 IP 주소 또는 이름으로 지정하십시오. 또한 --protocol=TCP 옵션을 사용하여 localhost에 대해서도 전송 프로토콜을 명시적으로 지정할 수 있습니다. 예:
1mysql --host=127.0.0.1 2mysql --protocol=TCP
서버가 IPv6 연결을 허용하도록 구성된 경우, 클라이언트는 --host=::1를 사용하여 IPv6를 통해 로컬 서버에 연결할 수 있습니다. Section 7.1.13, “IPv6 Support”를 참고하십시오.
Windows에서 MySQL 클라이언트가 명명 파이프 연결을 사용하도록 강제하려면, --pipe 또는 --protocol=PIPE 옵션을 지정하거나 호스트 이름으로 .(period)을 지정하십시오. 서버가 명명 파이프 연결을 지원하도록 named_pipe 시스템 변수를 사용해 시작되지 않았거나, 연결을 시도하는 사용자가 named_pipe_full_access_group 시스템 변수에 지정된 Windows 그룹의 구성원이 아닌 경우, 오류가 발생합니다. 기본 파이프 이름을 사용하고 싶지 않다면, --socket 옵션을 사용하여 파이프 이름을 지정하십시오.
원격 서버에 대한 연결은 TCP/IP를 사용합니다. 다음 명령은 기본 포트 번호(3306)를 사용하여 remote.example.com에서 실행 중인 서버에 연결합니다:
1mysql --host=remote.example.com
포트 번호를 명시적으로 지정하려면 --port 또는 -P 옵션을 사용하십시오:
1mysql --host=remote.example.com --port=13306
로컬 서버에 대한 연결에서도 포트 번호를 지정할 수 있습니다. 그러나 앞에서 설명했듯이, Unix에서 localhost에 대한 연결은 기본적으로 소켓 파일을 사용하므로, 앞에서 설명한 대로 TCP/IP 연결을 강제하지 않는 한, 포트 번호를 지정하는 옵션은 무시됩니다.
다음 명령의 경우, 프로그램은 Unix에서 소켓 파일을 사용하며 --port 옵션은 무시됩니다:
1mysql --port=13306 --host=localhost
포트 번호가 사용되도록 하려면, TCP/IP 연결을 강제해야 합니다. 예를 들어, 다음 두 가지 방식 중 하나로 프로그램을 실행합니다:
1mysql --port=13306 --host=127.0.0.1 2mysql --port=13306 --protocol=TCP
클라이언트 프로그램이 서버에 대한 연결을 설정하는 방법을 제어하는 옵션에 대한 추가 정보는 Section 6.2.3, “Command Options for Connecting to the Server”를 참고하십시오.
클라이언트 프로그램을 실행할 때마다 명령줄에 입력하지 않고도 연결 파라미터를 지정할 수 있습니다:
[client] 섹션에 연결 파라미터를 지정합니다. 파일의 관련 섹션은 다음과 같을 수 있습니다:1[client] 2host=host_name 3user=user_name 4password=password
자세한 내용은 Section 6.2.2.2, “Using Option Files”를 참고하십시오.
일부 연결 파라미터는 환경 변수를 사용하여 지정할 수 있습니다. 예:
mysql의 호스트를 지정하려면 MYSQL_HOST를 사용합니다.
Windows에서 MySQL 사용자 이름을 지정하려면 USER를 사용합니다.
지원되는 환경 변수 목록은 Section 6.9, “Environment Variables”를 참고하십시오.
6.2.3 Command Options for Connecting to the Server
6.2.5 Connecting to the Server Using URI-Like Strings or Key-Value Pairs