CI 묻고 답하기

제목 코드이그나이터 DB 연동 질문입니다. (MySQL or MariaDB)
카테고리 CI 2, 3
글쓴이 지상 작성시각 2017/03/28 15:25:59
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 23471   RSS

로컬 웹서버에서는 DB 내용을 가져오는게 잘 됩니다.

제가 궁금한 것은 로컬에서 웹서버를 돌리고, DB만 외부 서버에서 원격 접속하여 불러오는게 가능한가요?

config/database.php 설정에서

// 'hostname' => 'localhost',
// 'username' => 'book_user',
// 'password' => 'book_password',
'hostname' => '133.130.90.245',
'username' => 'root',
'password' => '패스워드',
'database' => 'vrief_test_170322'

이런 식으로 설정했는데 안 되네요.

에러 내용은 

Unable to connect to your database server using the provided settings.

Filename: C:/AutoSet10/public_html/system/database/DB_driver.php

Line Number: 436

입니다.

해보니까 CI 소스도 함께 외부서버에 올려야만 되는 것 같아서요.

 다음글 데이터베이스에 대해 질문있습니다. (1)
 이전글 excel 다운로드 구현중 생성한 엑셀파일이 깨지는 현... (6)

댓글

배강민 / 2017/03/28 15:30:35 / 추천 0
pconnect 설정을 false로 해보세용
지상 / 2017/03/28 15:31:52 / 추천 0

물론 그 부분은 되어있습니다.

$db['default'] = array(
	'dsn'	=> '',
	// 'hostname' => 'localhost',
	// 'username' => 'book_user',
	// 'password' => 'book_password',
	'hostname' => '133.130.90.245',
	'username' => 'root',
	'password' => '패스워드',
	'database' => 'vrief_test_170322',
	'dbdriver' => 'mysqli',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

 

kaido / 2017/03/28 15:33:37 / 추천 0

접속 정보다 올바른데 접속이 안되고 있다면 DB 접속기 툴로 접속 해보셔도 안되실 겁니다.

이유는 DB 접근 권한 때문에 그렇습니다.

혹은 DB 서버에서 방화벽에 걸리는 경우도 있습니다.

 

cafe24를 기준으로 말씀드리면 웹호스팅 하면 방화벽에 외부 접속 IP를 딱 1개 설정 가능 합니다.

웹호스팅이 아닌 가상 호스팅이나 클라우드인 경우 방화벽에 IP접근 허용 하시고

DB에  외부 접근권한 주세요.

http://zetawiki.com/wiki/MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9

 

CI 때문에 접속이 안되거나 하진 않습니다.

 

그리고 PORT 설정도 안되어계시네요.

'hostname' => '133.130.90.245:3306',

지상 / 2017/03/28 15:58:19 / 추천 0

kaido님// 서버를 보니 3306 포트가 외부접속이 허용되어있지 않아서 그런 것 같습니다.

root@133:~# netstat -ntlp | grep mysqld
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      9305/mysqld

이것을 해결하면 될 것 같은데 문제는

/etc/mysql/my.cnf를 열어보면 bind-address 부분이 아예 없고,

<bind-address = 0.0.0.0>을 추가->mysql 재시작

해도 안 됩니다. 계속 이것저것 시도 중...

아, 첨에 말씀하신 DB 접속기 툴(HeidiSQL)로는 접속이 되는 상태입니다.

kaido / 2017/03/28 16:01:35 / 추천 0

제가 드린 DB 아이피 오픈을 하셨고 포트 오픈은 못하셨다면

http://webdir.tistory.com/170

아 참고로 AWS 이신건 아니시죠? 몇몇 클라우드는 외부 방화벽 오픈 방법이 다릅니다.

 

접속툴로 접속이 되는 상황이면 무조건 되어야 합니다.

CI에서 접속과 접속툴 하고 차이는 단 1도 없거든요.

 

아 간혹 윈도우 환경에서 테스트 할때 윈도우 방화벽에 걸려서 못 나가는 경우도 있습니다.

접속툴은 보통 설치할때 방화벽에 예외처리 되는데 3306번은 따로 추가 해야 하거든요.

지상 / 2017/03/28 16:11:47 / 추천 0

iptables도 깔아서 설정 해보았습니다. 감사합니다^^

서버는 conoHa(코노하) 사용중입니다.

아직까지 netstat 명령으로 확인할 때 계속 127.0.0.1:3306 으로만 도는 상태입니다.