MySQL이 실행중인 포트와 연결 가능한지 여부를 테스트하는 방법은 무엇입니까?


143

MySQL을 설치했으며 사용자로 로그인했습니다.

그러나 다음과 같이 연결하려고하면 :

http://localhost:3306
mysql://localhost:3306

둘 다 작동하지 않습니다. 둘 다 작동하는지 확실하지 않지만 적어도 하나는 :)해야합니다.

포트가 실제로 3306인지 어떻게 확인할 수 있습니까? 어떻게 든 리눅스 명령이 있습니까? 또한 URL을 통해 시도하는 더 정확한 방법이 있습니까?

답변:


207

포트에서 리스너를 찾으려면 다음과 같이하십시오.

netstat -tln

mysql이 실제로 해당 포트에서 수신 대기하는 경우 다음과 같은 행이 표시되어야합니다.

tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      

포트 3306은 MySql의 기본 포트입니다.

연결하려면 기본 mysql 클라이언트와 같이 필요한 클라이언트를 사용해야합니다.

mysql -h localhost -u 사용자 데이터베이스

또는 라이브러리 코드로 해석되는 URL입니다.


2
127.0.0.1:3306 대신 0.0.0.0:3306이라고 표시되면 무엇을 의미합니까?
mbmast

1
@mbmast the 127 ...은 로컬 호스트에서만 청취 함 (외부 액세스 불가) 0.0.0.0은 "모든 인터페이스"를 의미하므로 일반적으로 외부에서 볼 수 있습니다.
Keith

외부에서 볼 수 있다고 생각했는데 컴퓨터 자체의 IP 주소 여야하며 0.0.0.0은 서비스를 어디에서나 사용할 수 없음을 의미합니다. 내가 틀렸어? 나는 MySQL을 실행하는 상자가 있고 방화벽은 모든 IP 주소에서 3306을 열었지만 MySQL은 연결을 거부합니다. 현재 MySQL은 0.0.0.0을 수신하고 있기 때문에 생각했습니다.
mbmast

이것을 -p매개 변수 를 참조하는 @bortunac의 답변과 병합해야합니다 . 프로세스를 추가하면이 정보가 더욱 유용 해집니다.
Ragaar

1
Linux의 경우 @JBeck 세 플래그. TCP, 리스너, 이름 조회 없음 참조하십시오 man netstat.
Keith

138

MySQL 클라이언트 사용 :

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';

오류 1146 (42S02) : 테이블 'performance_schema.global_variables'가 존재하지 않음
Maria Ines Parnisari

65

grep port /etc/mysql/my.cnf (적어도 debian / ubuntu works)

또는

netstat -tlpn | grep mysql

확인

바인드 주소 127.0.0.1

가능한 제한 사항을 보려면 /etc/mysql/my.cnf


32
netstat -tlpn

다음과 같은 목록이 표시됩니다.

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1393/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1859/master
tcp        0      0 123.189.192.64:7654     0.0.0.0:*               LISTEN      2463/monit
tcp        0      0 127.0.0.1:24135         0.0.0.0:*               LISTEN      21450/memcached
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      16781/mysqld

모든 세부 사항에 대해 루트로 사용하십시오. 이 -t옵션은 출력을 TCP 연결로 제한합니다. -l수신 포트의 -p경우 프로그램 이름과-n 이 지정된 버전 대신 포트의 숫자 버전을 표시합니다.

이런 식으로 프로세스 이름과 포트를 볼 수 있습니다.


1
나를 위해 작동하지 않았다- "tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN-"
Bryan

7

-e( --execute) 옵션 만 사용하십시오 :

$ mysql -u root -proot -e "SHOW GLOBAL VARIABLES LIKE 'PORT';"                                                                                                       (8s 26ms)
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+

root"사용자 이름"과 "암호"로 교체


6

두 URL이 모두 올바르지 않습니다.

jdbc:mysql://host:port/database

나는 그것이 말할 것도 없다고 생각했지만 Java로 데이터베이스에 연결하려면 JDBC 드라이버가 필요합니다. MySQL JDBC 드라이버 가 필요합니다 .

TCP / IP를 통한 소켓을 사용하여 연결할 수 있습니다. MySQL 문서를 확인하십시오 .

http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html을 참조 하십시오.

최신 정보:

MySQL ( telnet ip 3306) 에 텔넷을 시도했지만 작동하지 않습니다.

http://lists.mysql.com/win32/253

나는 이것이 당신이 생각한 것이라고 생각합니다.


.? 고마워요 -! 나는 브라우저에 붙여 넣을 때 내 코드에 그것을 시도 할 때 작동하지 않았다 :( 또한, 파이어 폭스는 오픈 그런 건 어디에서 / 나는 그것을 밖으로 시도 수있는 방법을 수 없다고
GeekedOut

예, 브라우저에서 열 수 없습니다. MySQL JDBC 드라이버와 Java 코드가 필요합니다.
duffymo

3
Java를 사용하는 경우에만 해당됩니다.
Keith

database.yml 파일을 통해 Ruby on Rails를 사용하여 설정하려고합니다. 하지만 방금 포트 번호가 필요했습니다.
GeekedOut

이것은 실제로 질문에 대답하지 않습니다.
AStopher

6

일부에 대한 간단한 접근 방식 : MySQL이 특정 포트에 있는지 확인하려면 터미널에서 다음 명령을 사용할 수 있습니다. Mac에서 테스트되었습니다. 기본 포트는 3306입니다.

mysql --host=127.0.0.1 --port=3306

MySQL 셸 터미널에 성공적으로 로그인하면 좋습니다! 이것이 성공적인 로그인 결과입니다.

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9559
Server version: 5.6.21 Homebrew

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

5

3306은 mysql의 기본 포트입니다. 그것을 확인하십시오 :

netstat -nl|grep 3306

이 결과를 제공해야합니다.

tcp 00 127.0.0.1:3306 0.0.0.0:* 듣기


3

당신이 사용할 수있는

ps -ef | grep mysql

3

나에게 @joseluisq의 답변은 다음과 같습니다.

오류 1045 (28000) : 사용자 'root'@ 'localhost'에 대한 액세스가 거부되었습니다 (암호 사용 : NO).

그러나 다음과 같이 작동했습니다.

$ mysql -u root@localhost  -e "SHOW GLOBAL VARIABLES LIKE 'PORT';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+

3

Mac OS X에는 두 가지 옵션이 있습니다. netstat또는lsof

를 사용 netstat하면 Mac OS X에서 프로세스가 표시되지 않으므로 netstat를 사용하면 포트로만 검색 할 수 있습니다.
를 사용 lsof하면 프로세스 이름이 표시됩니다.

포트 충돌 (도커 컨테이너)이 발생했을 때 다음을 수행했습니다.

netstat -aln | grep 3306

출력 : tcp46 0 0 *.3306 *.* LISTEN

sudo lsof -i -P | grep -i "LISTEN" | grep -i 3306

출력 : mysqld 60608 _mysql 31u IPv6 0x2ebc4b8d88d9ec6b 0t0 TCP *:3306 (LISTEN)


2

netstat사용할 수없는 시스템 (예 : RHEL 7 및 최신 데비안 릴리스) 에있는 경우 다음과 같이을 사용할 수 있습니다 ss.

sudo ss -tlpn | grep mysql

그리고 당신은 출력을 위해 다음과 같은 것을 얻을 것입니다 :

LISTEN     0      50        *:3306        *:*        users:(("mysqld",pid=5307,fd=14))

네 번째 열은 Local Address:Port입니다. 따라서이 경우 Mysql은 기본값 인 포트 3306에서 수신 대기합니다.


1

@bortunac의 솔루션에 동의합니다. my.conf는 mysql에 한정되는 반면 netstat는 모든 수신 포트를 제공합니다.

아마도 하나는 mysql에 대해 설정된 포트를 확인하고 다른 하나는 시스템이 해당 포트를 통해 수신하고 있는지 확인하는 데 사용합니다.

내 클라이언트는 CentOS 6.6을 사용하고 / etc /에서 my.conf 파일을 찾았으므로 다음을 사용했습니다.

grep port /etc/my.conf (CentOS 6.6)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.