한국어

네트워킹

온누리070 플레이스토어 다운로드
    acrobits softphone
     온누리 070 카카오 프러스 친구추가온누리 070 카카오 프러스 친구추가친추
     카카오톡 채팅 상담 카카오톡 채팅 상담카톡
    
     라인상담
     라인으로 공유

     페북공유

   ◎위챗 : speedseoul


  
     PAYPAL
     
     PRICE
     

pixel.gif

    before pay call 0088 from app


원격 IP로 MySQL(MariaDB)에 접속이 되지 않을 때의 해법


※ Ubuntu 16.04 MariaDb 10.0의 상황과 원격 IP의 주소가 111.222.33.44라고 가정한다.


Java에서 다음과 같이 원격의 MySQL에 접속을 시도할때


String url = "jdbc:mysql://111.222.33.44:3306/나의DB명";


Connection refused 에러가 발생하거나 telnet을 이용해서 MySQL이 설치된 IP의 3306포트로 접속시 연결이 되지 않을 때의 해법이다.

네트워크의 연결 상태에따라 다양한 이유가 있을 수 있다. 예를들어 공유기 아래 서버가 물려있을 때 공유기에서 3306에 대한 포트 포워딩이 되어있지 않다면 아래의 방법이 통할수 없을 것이다.

다양한 원인들이 있으나 본 포스트는 3306 포트에 listening이 외부 IP로 설정되지 않고 127.0.0.1로 설정되어 있을 경우에 대한 해법이다.


telnet을 이용해서 해당 IP로 3306포트로 접속이 되는지부터 확인해보자.

일단 Windows에서는 기본적으로 telnet을 사용할수 없는 상태로 설정되어 있다. 다음과 같이 하여 telnet을 사용할수 있도록 변경한다.


제어판 - 프로그램 제거 또는 변경 - Windows 기능 켜기/끄기 - 텔넷 클라이언트 체크


MS-DOS 창에서 telent으로 다음과 같이 먼저 확인해 본다.


telnet 111.222.33.44 3306

연결 대상 111.222.33.44...호스트에 연결할 수 없습니다. 포트 3306: 연결하지 못했습니다.


SQLyog에서 접속시도해 보면 다음과 같은 에러가 발생한다.


오류 번호 2003 Can't connect to MySQL server on '111.222.33.44'


이럴 경우 MySQL이 외부 IP의 3306포트로 접속이 가능하지 않은 상태이다. 

아래와 같이 자기 자신의 IP(여기서는 111.222.33.44)로 3306 포트로 접속시 접속을 시도했을 때 접속이 되지 않는다면 외부 IP에서 3306포트로 접속이 가능하지 않은 상태라는 뜻이다.


물론 아래의 접속으로 접속이 되기 위해서는 사전에 아래 명령어에 의해서 root가 외부 IP로 접속할수 있는 권한 설정이 mysql 데이터베이스에 설정 되어 있어야 하는 걸 전제로 한다.


MariaDB [(none)]> grant all privileges on *.* to 'root'@'%' identified by '비번';

MariaDB [(none)]> flush privileges;


만일 위와 같이 root가 외부 IP로의 자유로운 접속이 허락되어 있지 않으면 아래의 명령으로 접속이 안되는 건 당연한 일이다.

다음과 같이 MySQL에서는 권한 설정이 아래와 같이 정상적으로 되어 있다고 가정해 보자.


MariaDB [(none)]> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database changed

MariaDB [mysql]> select host, user, password from user;

+-----------+------+-------------------------------------------+

| host      | user | password                                  |

+-----------+------+-------------------------------------------+

| localhost | root | *8EA3CE4E6710007B6FD72BC385D48F3D985FD258 |

| %         | joe  | *8EA3CE4E6710007B6FD72BC385D48F3D985FD258 |

%         | root | *8EA3CE4E6710007B6FD72BC385D48F3D985FD258 |

+-----------+------+-------------------------------------------+

3 rows in set (0.00 sec)


MariaDB [mysql]> select host, user, db from db;

+------+------+-------+

| host | user | db    |

+------+------+-------+

| %    | joe  | mysql |

+------+------+-------+

1 row in set (0.00 sec)


일단 여기서는 root에 대한 외부 IP로의 접속 권한이 설정되어 있다는 걸 전제로 했을 때 아래와 같이 접속이 안된다면 현재 MySQL(MariaDB)는 외부 IP로의 접속을 위한 설정에 문제가 있다는 것이다.


root@xxx:/home/joe# mysql -h 111.222.33.44 -P 3306 -uroot -p

Enter password: 


이 경우 다음과 같은 에러가 발생한다.


ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.107' (111 "Connection refused")


이상과 같이 정상적으로 외부 IP로의 접속이 허용되어 있음에도 접속 불능사태가 발생한다면 다음 명령으로 3306 포트에 대해 listening 상태를 확인해 보자.


# netstat -ntlp | grep 3306

을 하면 


tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1235/mysqld


이렇게 나오면 localhost에서는 접속이 되지만 원격 IP에서는 접속이 안된다.


이 문제에 대한 해법은 아래 파일에서

/etc/mysql/mariadb.conf.d/50-server.cnf

  

bind-address            = 127.0.0.1 를 주석처리하고

bind-address   = 0.0.0.0 을 추가한다. 다음과 같이


#bind-address            = 127.0.0.1 

bind-address   = 0.0.0.0


변경된 사항을 적용하기 위해서 

# service mysql restart

를 하면된다고 검색해 보면 나와있는데 이 방법으로는 netstat으로 확인해보면 여전히 3306에 대한 listening을 127.0.0.1로되어 있다.

현재 가장 확실한 방법은 서버를 재부팅하면 변경된 설정 값이 제대로 적용이되고 외부 IP로 접속이 정상적으로 된다.

재부팅 없이 되는 방법을 아직은 모르겠다....;;;



출처: https://developer-joe.tistory.com/178?category=598680 [코드 조각-Android, Java, C#, C, C++, JavaScript, PHP, HTML, CSS, Delphi]
조회 수 :
289
등록일 :
2019.06.19
18:27:21 (*.214.125.21)
엮인글 :
http://webs.co.kr/index.php?document_srl=3320164&act=trackback&key=0e8
게시글 주소 :
http://webs.co.kr/index.php?document_srl=3320164
List of Articles
번호 제목 글쓴이 날짜 조회 수
60 두테이블비교 한쪽에 없는 값 추출 mysql left right outer join 서브쿼리 값사용 admin 2019-07-10 172
» 원격 IP로 MySQL(MariaDB)에 접속 방법 해법 설정 순서 admin 2019-06-19 289
58 oracle download install 오라클 다운로드 설치 admin 2018-05-29 3357
57 숫자 날짜 문자열 문자 공간 JSON MySQL 자료형 총 정리 phpMyAdmin 자료형 admin 2018-03-26 4056
56 mysql procedure admin 2017-11-16 4749
55 Sqlite very detail easy tutorial I recommand this admin 2017-09-09 6117
54 mysql 로컬접속 풀고 특정 아이피 접속 허가 허락 가능 하게 설정 하는 방법 admin 2017-09-05 5656
53 linux command chmod 리눅스 명령어 가장 쉽게 이해하기 설명 사용자 구룹 타인 권한 admin 2017-09-05 5846
52 mariadb CREATE USER CREATE USER statement creates new MariaDB accounts. admin 2017-09-01 14720
51 MySQL 데이터 베이스 백업 및 복구 방법 admin 2017-09-01 5935
50 Allowing MySQL Root Login from All IP Addresses : admin 2017-08-17 5548
49 Installation of MySQL Database Server admin 2017-08-17 5504
48 mysql 쿼리 로그 남기기 (실시간) admin 2015-04-15 9472
47 SQL Delete records using subqueries admin 2015-04-03 8554
46 Mysql privilege table GRANT SELECT,INSERT,UPDATE,DELETE ON db.table admin 2015-04-02 8722
45 안드로이드 SQLite 속도 향상! insert Transaction admin 2014-04-07 23324
44 MySQL에 원격 접속 허용 여러가지 아이피 아이피대역으로 admin 2014-04-02 37546
43 10gR2_sles10_install file admin 2014-03-18 15448
42 this is final answer assets sqlite Databases trouble copy External DB, check eclips admin 2014-02-18 15741
41 Browse SQLite data on the Android emulator admin 2014-02-15 17931
40 SQLite Database Browser file admin 2014-02-14 16785
39 SQLite Databases using External DB admin 2014-02-14 19045
38 sqlite DB copy admin 2014-02-14 15711
37 Android SQLite Database with Multiple Tables admin 2014-02-13 12991
36 Android Simple Clean Good SQLite Database Tutorial 잘된 설명 admin 2014-02-13 13901
35 android sqlite 사용하기 admin 2014-02-10 30556
34 SQLite 개발가이드 데이터베이스의 성능 admin 2014-02-10 34005
33 android - 다수의 Insert 수행시 속도 향상을 위한 팁 sQlite admin 2014-02-10 26594
32 Oracle Linux 에 Oracle DB 설치하기 admin 2013-12-03 36834
31 PreparedStatement mysql java 깔끔한설명 admin 2013-10-26 39777
30 Connect Excel VBA to a MySQL database file admin 2013-09-05 18919
29 Configuring Oracle ASM disks in Oracle Enterprise Linux admin 2013-04-20 17612
28 OS에따른 Oracle 설치버전 admin 2013-04-08 18527
27 RHEL4 + 10g 설치 _silent mode admin 2013-04-08 26393
26 OLE5 + 11G 설치 _silent mode admin 2013-04-08 29978
25 WHERE 조건절 검색시 서브쿼리는 어떻게? admin 2013-04-01 17859
24 CDR 추출 저장 Inner Join 사용 Sql 문 admin 2013-02-05 19122
23 SUPER OCM 1.8club admin 2012-12-18 19063
22 MySQL Java tutorial admin 2012-09-30 27499
21 Oracle 10g Articles admin 2012-06-24 18862
20 기본 10g 설치의 리눅스 세팅에서 추가 해줘야하는 사항(윈도우) admin 2012-06-24 20608
19 SUSE Linux Enterprise Server 10 (Oracle 10g R2 (10.2.0.1)) file admin 2012-03-09 20590
18 Upgrade Oracle from 10.2.0.1 To 10.2.0.4 (Windows) admin 2012-03-06 43672
17 Upgrade Oracle 10g Release 2 from 10201 to 10204 admin 2012-03-05 45053
16 centos 6.2 oracle 10g 설치 admin 2012-03-05 49681
15 Oracle RHEL4+10G 10.2.0.1 설치 10.2.0.5 패치 admin 2012-03-03 34581
14 Oracle Backup & restore with RMAN 기본 admin 2012-02-12 20297
13 오라클 ACE가 해설하는 Oracle Backup & Recovery admin 2012-02-07 20998
12 Oracle Backup & Restore admin 2012-02-07 35200
11 http://www.hoons.kr/ admin 2011-12-19 19546