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 mydb
shell>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 mydb
shell>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.1
shell>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.1
shell>mysql --port=13306 --protocol=TCP
다음 목록은 클라이언트 프로그램이 서버에 연결하는 방법을 제어하는 데 사용할 수있는 옵션의 개요입니다.
--host=
,host_name
-h
host_name
서버가 실행중인 호스트. 기본값은
localhost
입니다.--password[=
,pass_val
]-p[
pass_val
]MySQL 계정의 암호입니다. 전술 한 바와 같이 암호 값은 옵션이지만 지정하려면
-p
또는--password=
와 거기에 계속되는 비밀번호 사이에 공백이 있어서는 안됩니다. 기본적으로 암호를 전송하지 않습니다.--pipe
,-W
Windows에서 명명 된 파이프를 사용하여 서버에 연결합니다. 명명 된 파이프 연결을 가능하게하려면 서버는
--enable-named-pipe
옵션에서 시작해야합니다.--port=
,port_num
-P
port_num
TCP / 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=
name
Windows에서 공유 메모리를 사용하여 생성되는 로컬 서버에 연결 공유 메모리 이름. 기본값은
MYSQL
입니다. 공유 메모리 이름은 대소 문자를 구분합니다.공유 메모리 연결을 가능하게하려면 서버는
--shared-memory
옵션으로 시작해야합니다.--socket=
,file_name
-S
file_name
Unix에서 명명 된 파이프를 사용하여 수행되는 로컬 서버에 연결하는 데 사용하는 Unix 소켓 파일의 이름입니다. 기본 Unix 소켓 파일 이름은
/tmp/mysql.sock
입니다.Windows의 경우 로컬 서버에 연결하는 데 사용할 명명 된 파이프의 이름. 기본 Windows 파이프 이름은
MySQL
입니다. 파이프 이름은 대소 문자를 구분하지 않습니다.명명 된 파이프 연결을 가능하게하려면 서버는
--enable-named-pipe
옵션에서 시작해야합니다.--ssl*
--ssl
로 시작하는 옵션은 서버가 SSL 지원으로 구성되어있는 경우에는 SSL을 사용하여 서버에 대한 보안 연결을 설정하는 데 사용됩니다. 자세한 내용은 섹션 6.3.10.4 "SSL 명령 옵션" 을 참조하십시오.--user=
,user_name
-u
user_name
사용하는 MySQL 계정의 사용자 이름입니다. 기본 사용자 이름은 Windows에서
ODBC
, Unix는 Unix 로그인 이름입니다.
클라이언트 프로그램을 호출 할 때마다 다른 기본값을 입력하지 않아도 좋다 그래야 명령 행에서 연결을 할 때이를 사용하도록 지정할 수 있습니다. 이것은 여러 가지 방법으로 실행할 수 있습니다.
연결 매개 변수를 옵션 파일의
[client]
섹션에 지정할 수 있습니다. 이 파일의 관계 섹션은 다음과 같습니다.[client] host =
host_name
user =user_name
password =your_pass
섹션 4.2.6 "옵션 파일 사용" 에서 옵션 파일에 대해 자세히 설명하고 있습니다.
일부 연결 매개 변수는 환경 변수를 사용하여 지정할 수 있습니다. mysql 호스트는
MYSQL_HOST
에서 지정할 수 있습니다. MySQL 사용자 이름은USER
를 사용하여 지정할 수 있습니다 (Windows 만 가능) 비밀번호는MYSQL_PWD
를 사용하여 지정할 수 있습니다 (그러나 이것은 안전하지 않습니다. 섹션 6.1.2.1 "비밀번호 보안에 대한 최종 사용자 지침" 을 참조하십시오). 변수의 목록은 섹션 2.12 "환경 변수" 를 참조하십시오.