4.2.2 MySQL 서버에 연결
클라이언트 프로그램이 MySQL 서버에 접속할 수 있기 때문에 서버가 실행중인 호스트의 이름 및 MySQL 계정의 사용자 이름과 암호 등의 적절한 연결 매개 변수를 사용해야합니다. 각 연결 매개 변수는 기본값이 있지만, 필요에 따라 명령 행 또는 옵션 파일에서 프로그램 옵션을 지정하여 재정의 할 수 있습니다.
다음 예제는 mysql 클라이언트 프로그램을 사용하지만 원칙은 mysqldump, mysqladmin 또는 mysqlshow 같은 다른 클라이언트에도 적용됩니다.
다음 명령은 연결 매개 변수를 명시 적으로 지정하지 않고 mysql을 호출합니다.
shell> mysql 매개 변수 옵션이 없기 때문에 기본값이 적용됩니다.
기본 호스트 이름은
localhost입니다. Unix에서는 후술하는 바와 같이 여기에는 특별한 의미가 있습니다.기본 사용자 이름은 Windows에서
ODBC, Unix는 Unix 로그인 이름입니다.-p도--password지정하지 않은 경우 암호는 전송되지 않습니다.mysql에서 첫 번째 옵션이 아닌 인수는 디폴트 데이터베이스 이름으로 간주됩니다. 그런 옵션이없는 경우에는 mysql은 기본 데이터베이스를 선택하지 않습니다.
비밀번호 외에도 호스트 이름과 사용자 이름을 명시 적으로 지정하려면 명령 줄에서 적절한 옵션을 지정합니다.
shell>mysql --host=localhost --user=myname --password=mypass mydbshell>mysql -h localhost -u myname -pmypass mydb
암호 옵션은 암호 값은 옵션입니다.
-p또는--password옵션을 사용하여 암호 값을 지정하는 경우-p또는--password와 거기에 계속되는 비밀번호 사이에 공백이 있어서는 안됩니다.-p또는--password옵션을 사용하지만 암호 값을 지정하지 않으면 암호를 입력하도록 클라이언트 프로그램이 필요합니다. 암호는 입력시 표시되지 않습니다. 이것은 명령 행에서 암호를 제공하는 것보다 보안입니다. 시스템의 다른 사용자가 ps auxw 등의 명령을 실행하여 명령 행에서 지정된 암호를 볼 수있는 경우가 있습니다. 섹션 6.1.2.1 "비밀번호 보안에 대한 최종 사용자 지침" 을 참조하십시오.
지금 언급 한 바와 같이 명령 행에서 암호 값을 포함하는 것은 보안상의 위험이 될 수 있습니다. 이 문제를 해결하려면 암호 값을 넣지 않고 --password 또는 -p 옵션을 지정합니다.
shell>mysql --host=localhost --user=myname --password mydbshell>mysql -h localhost -u myname -p mydb
암호 옵션 암호 값이없는 경우, 클라이언트 프로그램은 프롬프트를 출력하여 사용자가 암호를 입력하는 것을 대기합니다. (이 예에서는 mydb 는 그 전에 암호 옵션과 공백으로 구분되어 있기 때문에 암호는 해석되지 않습니다.)
시스템에서는 MySQL이 비밀번호를 요청하는 데 사용하는 라이브러리 루틴이 자동적으로 패스워드를 8 자로 제한합니다. 이것은 시스템 라이브러리의 문제이며, MySQL의 문제가 아닙니다. 내부적으로는 MySQL은 암호 길이에 대한 제한은 없습니다. 이 문제를 해결하려면 MySQL 암호를 8 자 이하의 값으로 변경하거나 옵션 파일에 암호를 지정합니다.
Unix에서 MySQL 프로그램은 호스트 이름 localhost 를 다른 네트워크 기반 프로그램과 비교하여 예상되는 것과 아마 다른 특별한 방법으로 취급합니다. localhost 연결에서 MySQL 프로그램은 Unix 소켓 파일을 사용하여 로컬 서버에 연결하려고합니다. 이것은 포트 번호를 지정하기 위해 --port 또는 -P 옵션이 주어진 경우에도 발생합니다. 클라이언트가 로컬 서버에 TCP / IP 연결을 보장하려면 --host 또는 -h 를 사용하여 호스트 이름 값 127.0.0.1 또는 로컬 서버의 IP 주소 또는 이름을 지정합니다. --protocol=TCP 옵션을 사용하여 localhost 에 대해서도 연결 프로토콜을 명시 적으로 지정할 수도 있습니다. 예 :
shell>mysql --host=127.0.0.1shell>mysql --protocol=TCP
--protocol 옵션을 사용하면 다른 옵션이 일반적 기본적으로 다른 프로토콜이 될 경우에도 특정 유형의 연결을 설정할 수 있습니다.
서버가 IPv6 연결을 허용하도록 구성되어 있으면 클라이언트는 --host=::1 을 사용하여 IPv6로 연결할 수 있습니다. 섹션 5.1.9 "IPv6 지원" 을 참조하십시오.
Windows에서 --pipe 또는 --protocol=PIPE 옵션을 지정하거나 . (마침표)를 호스트 이름으로 지정하여 MySQL 클라이언트가 명명 파이프 연결을 사용하도록 강요 할 수 있습니다. 명명 된 파이프 연결이 활성화되어 있지 않으면 오류가 발생합니다. 기본 파이프 이름을 사용하지 않는 경우에는 --socket 옵션을 사용하여 파이프 이름을 지정합니다.
원격 서버에 대한 연결은 항상 TCP / IP가 사용됩니다. 다음 명령은 기본 포트 번호 (3306)를 사용하여 remote.example.com 에서 동작하는 서버에 연결합니다.
shell> mysql --host=remote.example.com
포트 번호를 명시 적으로 지정하려면 --port 옵션 또는 -P 옵션을 사용합니다.
shell> mysql --host=remote.example.com --port=13306
로컬 서버 연결에 포트 번호를 지정할 수 있습니다. 그러나 전술 한 바와 같이, Unix에서는 localhost 연결은 기본적으로 소켓 파일이 사용됩니다. 전술 한 바와 같이 TCP / IP 연결을 강제하지 않으면 포트 번호를 지정하는 모든 옵션은 무시됩니다.
다음 명령은 Unix에서 프로그램은 소켓 파일을 사용하고 --port 옵션은 무시됩니다.
shell> mysql --port=13306 --host=localhost
포트 번호를 사용하도록하려면 프로그램을 다음 중 하나의 방법으로 호출합니다.
shell>mysql --port=13306 --host=127.0.0.1shell>mysql --port=13306 --protocol=TCP
다음 목록은 클라이언트 프로그램이 서버에 연결하는 방법을 제어하는 데 사용할 수있는 옵션의 개요입니다.
--host=,host_name-hhost_name서버가 실행중인 호스트. 기본값은
localhost입니다.--password[=,pass_val]-p[pass_val]MySQL 계정의 암호입니다. 전술 한 바와 같이 암호 값은 옵션이지만 지정하려면
-p또는--password=와 거기에 계속되는 비밀번호 사이에 공백이 있어서는 안됩니다. 기본적으로 암호를 전송하지 않습니다.--pipe,-WWindows에서 명명 된 파이프를 사용하여 서버에 연결합니다. 명명 된 파이프 연결을 가능하게하려면 서버는
--enable-named-pipe옵션에서 시작해야합니다.--port=,port_num-Pport_numTCP / IP를 사용하는 연결에서 연결에 사용할 포트 번호. 기본 포트 번호는 3306입니다.
--protocol={TCP|SOCKET|PIPE|MEMORY}이 옵션은 서버에 연결하는 데 사용하는 프로토콜을 명시 적으로 지정합니다. 이 옵션은 다른 연결 매개 변수는 필요한 프로토콜 이외의 것이 일반적으로 사용되는 경우에 유용합니다. 예를 들어, Unix에서는
localhost연결은 기본적으로 Unix 소켓 파일을 사용하여 이루어집니다.shell>mysql --host=localhost대신에 TCP / IP 연결을 강제하려면
--protocol옵션을 지정합니다.shell>mysql --host=localhost --protocol=TCP다음 표는 허용되는
--protocol옵션 값을 나타 각 값을 사용할 수있는 플랫폼을 보여줍니다. 값은 대소 문자를 구분하지 않습니다.--protocol값연결 프로토콜 허용되는 운영 체제 TCP로컬 또는 원격 서버에 TCP / IP 연결 모든 SOCKET로컬 서버에 Unix 소켓 파일 연결 Unix 만 PIPE로컬 또는 원격 서버에 명명 된 파이프 연결 Windows 만 MEMORY로컬 서버의 공유 메모리 연결 Windows 만 --shared-memory-base-name=nameWindows에서 공유 메모리를 사용하여 생성되는 로컬 서버에 연결 공유 메모리 이름. 기본값은
MYSQL입니다. 공유 메모리 이름은 대소 문자를 구분합니다.공유 메모리 연결을 가능하게하려면 서버는
--shared-memory옵션으로 시작해야합니다.--socket=,file_name-Sfile_nameUnix에서 명명 된 파이프를 사용하여 수행되는 로컬 서버에 연결하는 데 사용하는 Unix 소켓 파일의 이름입니다. 기본 Unix 소켓 파일 이름은
/tmp/mysql.sock입니다.Windows의 경우 로컬 서버에 연결하는 데 사용할 명명 된 파이프의 이름. 기본 Windows 파이프 이름은
MySQL입니다. 파이프 이름은 대소 문자를 구분하지 않습니다.명명 된 파이프 연결을 가능하게하려면 서버는
--enable-named-pipe옵션에서 시작해야합니다.--ssl*--ssl로 시작하는 옵션은 서버가 SSL 지원으로 구성되어있는 경우에는 SSL을 사용하여 서버에 대한 보안 연결을 설정하는 데 사용됩니다. 자세한 내용은 섹션 6.3.10.4 "SSL 명령 옵션" 을 참조하십시오.--user=,user_name-uuser_name사용하는 MySQL 계정의 사용자 이름입니다. 기본 사용자 이름은 Windows에서
ODBC, Unix는 Unix 로그인 이름입니다.
클라이언트 프로그램을 호출 할 때마다 다른 기본값을 입력하지 않아도 좋다 그래야 명령 행에서 연결을 할 때이를 사용하도록 지정할 수 있습니다. 이것은 여러 가지 방법으로 실행할 수 있습니다.
연결 매개 변수를 옵션 파일의
[client]섹션에 지정할 수 있습니다. 이 파일의 관계 섹션은 다음과 같습니다.[client] host =
host_nameuser =user_namepassword =your_pass섹션 4.2.6 "옵션 파일 사용" 에서 옵션 파일에 대해 자세히 설명하고 있습니다.
일부 연결 매개 변수는 환경 변수를 사용하여 지정할 수 있습니다. mysql 호스트는
MYSQL_HOST에서 지정할 수 있습니다. MySQL 사용자 이름은USER를 사용하여 지정할 수 있습니다 (Windows 만 가능) 비밀번호는MYSQL_PWD를 사용하여 지정할 수 있습니다 (그러나 이것은 안전하지 않습니다. 섹션 6.1.2.1 "비밀번호 보안에 대한 최종 사용자 지침" 을 참조하십시오). 변수의 목록은 섹션 2.12 "환경 변수" 를 참조하십시오.