MySQL 에 접속하는 방법

2024년 2월 2일 작성

Real MySQL 1소켓, TCP/IP

서버 연결 테스트

서버 접속은 클라이언트 프로그램인 mysql 을 이용할 수 있다. (unix, linux에서는 client를 실행하기 위해 mysql 프로그램을 PATH 환경변수에 등록하자.)

240203-195916

위 스크린샷은 MySQL 소켓 파일을 이용해 접속하는 예제다.

240203-200041

그리고 이건 TCP/IP fmf xhdgo 127.0.0.1에 접속하는 예제이다. 이 경우에는 포트를 명시하는 것이 일반적. 원격 호스트에 있는 MySQL 서버에 접속할 때는 반드시 두번째 방법을 사용해야한다. (나는 사실 소켓 파일을 사용하는 방법을 몰랐다.)

소켓 vs 인터넷

MySQL 서버접속시 호스트에 localhost 를 명시하는 것과 127.0.0.1 을 명시하는 것은 의미가 다르다고 한다.

--host=localhost 는 소켓파일을 통해 접속하고, 이는 TCP/IP 통신이 아니라 Unix domain socket 을 이용하는 방식으로, unix의 IPC 프로토콜을 이용한다.

반면에 --host=127.0.0.1 은 TCP/IP 통신을 사용하는 것이다. (loopback IP)

아무 인자 없이 사용

240203-200631

이렇게, 아무인자도 넣지 않고도 할 수 있다. default 값이 있기 때문이라고 한다.

host 옵션의 default 값은 localhost이고, 그래서 소켓파일을 사용해서 서버에 접속하게 된다고 한다. 그리고 소켓 파일의 위치는 MySQL 서버 설정파일에서 읽어서 사용한다고한다.

클라이언트 없이 접속가능여부 알아내기

원격 컴퓨터에서 MySQL 접속가능 여부만 알아내고 싶을 때 굳이 client 프로그램을 깔 필요가 없다고 한다. (나는 실제로 그런적이 있었는데.. 이 책을 읽었더라면 🥲)

이처럼 커넥션이 가능한지, 혹은 네트워크 연결을 테스트할 때 사용할 수 있는 방법은 telnet 또는 nc 명령어를 사용하는 것이다.

linux> telnet 10.2.30.41 3306
linux> nc 10.2.30.41 3306

nc 명령어를 해봄. 240203-201753

이렇게 했을 때 버전정보가 잘 나오면 연결환경은 잘 구성된 것이다. telnet, nc가 잘 되는데도 응용프로그램이 mysql에 접속하지 못하면 연결 정보 (host, password)가 잘못됐을 가능성이 높다.