메뉴 건너뛰기

조회 수 5086 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

우선 필자의 환경은 centos 5.5라는걸 밝혀둔다.

mysql 포트 변경법

1. my.cnf 열어서 포트 변경(보통 /etc/my.cnf에 위치한다)

 
[mysqld] port=8888


보통 mysql을 기본설치 하였다면(centos 패키지 관리자로 설치한걸 뜻함) 기본포트는 3306으로 되어 있을것이고, my.cnf파일을 열어보아도 port=3306이라는 문구가 보통은 보이지 않을것이다. 안보일때는 위의 port=8888(자신이원하는포트)를 추가하면 되는것이다.

2. mysql 재시작
centos 기준으로 터미널을 열고 # service mysqld restart 해주면 된다. 환경이 다르더라도 mysqld 파일을 찾아서 재시작해주면 될것이다.

3. iptables에서 자신이 추가한 포트 열기
이부분은 방화벽 설정을 해제한 유저라면 사용할필요가 없지만.. 그렇게 사용하는 유저는 없을거라고 본다..
iptables 파일을 열고

 
-A INPUT -m state --state NEW -m udp -p udp --dport 8888 -j ACCEPT

이런식으로 해당포트를 허용해주면 된다.

4. iptables 재시작
터미널을 열고 # service iptables restart 해주면 된다.

참고로 위의 3,4번은 x윈도우를 사용하는 유저라면
시스템 -> 관리 -> 보안수준 및 방화벽 -> 해당포트 추가
라는 식으로 해도 상관은 없다.

위의 포트설정은 mysql접속을 내부 서버에서 했을때는 딱히 해줄 필요가 없다.
하지만 외부에서 mysql을 접속해서 사용하게 하기 위해서 설정 해놓는 것이다.
3306포트가 기본적인 설정 포트이기 때문에 보안상 다른 포트로 바꾼뒤 사용하는 경우가 종종 있다.

php에서 해당 mysql 접속은 mysql_connect() 함수를 이용하고,
해당 db 접속은 mysql_select_db()을 이용한다.
우선 예제부터 보자.

$con = mysql_connect('localhost', 'mysql아이디', 'mysql비밀번호');
//$con = mysql_connect('해당서버아이피:포트', 'mysql아이디', 'mysql비밀번호');
if (!$con) echo 'mysql접속실패 : '.mysql_error(); // 접속실패시 에러출력해주는것
else echo 'mysql접속완료';

$db=mysql_select_db("test", $con);
if(!$db) echo 'db연결실패 : '.mysql_error(); // 연결실패시 에러출력해주는것
else echo "db연결완료";

mysql_close($con); //접속종료

위의 예제중 1번째 줄의 접속방식이 보통의 해당서버에서 해당서버의 msyql에 접속할때 쓰는 방식이고 2번째 줄의 방식이 다른서버에서 해당 mysql서버로 접속할때 쓰는 방식이다.
필자가 위해서 한 예제에 따르면
mysql_connect('123.12.123.12:8888', 'mysql아이디', 'mysql비밀번호')
의 식으로 포트를 넣어주면 되겠다.

그리고 해당 db 접속시에 해당 db는 있는데 접속이 되질 않는다면, 보통 2가지 이유 때문에 안되는 것이다.
1. 접속한 아이디가 해당 db에 대한 권한이 없다.
2. 접속한 db의 host 설정이 안되어 있다.

이경우에는 root권한으로 접속해서 mysql이라는 db의 db라는 테이블에서
insert into db values('%','해당db','사용자', 'y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');
라는식으로 추가를 해주면 된다.

그리고 grant가 아닌 insert나 update를 이용한 권한 부여는 mysql을 재시작하거나,
flush privileges 명령어로 권한설정을 다시 불러와주어야 적용 이 제대로 된다는걸 알아두기 바란다.

간단히 설명하자면...
%는 모든 원격접속을 허용한다는것이다. 보통은 localhost로 되어 있는 녀석들이 많을것이다. 특정 ip를 적어주면 해당 ip만 접속을 허용하게 된다.
해당db에는 설정을 해줄 db를 적으면 되고, 사용자에는 접속한 사용자ID를 적으면 된다.
나머지 'y'로 되어 있는것들은 접근후에 select나 insert등등의 허용을 설정하는 Select_priv 와 같은 항목들이다. 허용하고 싶은 항목은 'y'로 허용하지 않을 항목은 'n'로 해놓으면된다.


List of Articles
번호 제목 날짜 조회 수
46 mySQL 에서 날자표현 방법 2017.04.12 5365
45 두 테이블을 비교하여 한쪽테이블에는 있지만 다른 테이블에는 없는 값을 뽑아내보자! 2017.11.21 5387
44 [MySQL] 백업 및 복구 2017.04.12 5392
43 IMPORT 2016.12.23 5440
42 DISTINCT와 ALL 2016.12.23 5498
41 mysql 날짜 관련 date_add, date_format 2016.12.23 5500
40 데이타베이스 또는 테이블 정보 2016.12.23 5534
39 InnoDB, MyISAM 2016.12.23 5536
38 MySQL에서 원격 IP 접속 허용하기 2017.04.12 5621
37 덤프할때 한글깨짐 해결 2016.12.23 5635
36 문자형 데이터 2016.12.23 5646
35 숫자형 데이터 타입 2016.12.23 5668
34 Mysql 기본 명령어 2014.02.27 5693
33 MySQL 에서 랜덤(random)으로 레코드 읽어오기 2017.04.12 5727
32 테이블 복사, 테이블 비우기 2016.12.23 5783
31 Dump & Restore 2016.12.23 5788
30 IN 연산자 2016.12.23 5809
29 각각의 게시판에서 제일 최근글하나씩을 모아 정렬 2016.08.30 5812
28 MySQL 서버 데몬이 죽었을때 다시 실행하는 방법 2016.08.30 5842
27 dump 를 db에 올릴때 인코딩 문제 2016.12.23 5871
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved