메뉴 건너뛰기

조회 수 5078 추천 수 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
번호 제목 날짜 조회 수
106 LIMIT 속도 저하 2021.03.26 246
105 fulltext 관련 글 2021.03.26 125
104 order by field 와 union, 원하는 대로 정렬 하기 2021.03.26 768
103 테이블, 컬럼 charset 변경 2021.03.26 186
102 no exists, not in 을 이용한 조건에 만족하지 않는 것들 구하기, 둘의 차이점 2021.03.26 125
101 group by로 뽑아온 값중에 가장큰 값(max)의 상태값을 가져오기 2021.03.26 594
100 group by, distinct, count 를 이용한 겹치지 않는것의 개수 2021.03.26 262
99 mysqlbinlog (mysql 백업, 로그남기기) 2021.03.26 201
» mysql 포트 바꾸기, 외부에서 접속하기 2021.03.26 5078
97 테이블, 레코드 복사 2021.03.26 162
96 BEGIN, COMMIT, ROLLBACK 2021.03.26 315
95 column의 정보 중에서 column 설명(column_comment) 2021.03.26 129
94 [mysql,mariaDB] 컬럼 암호화, 복호화 2020.11.25 773
93 MySQL 암호화 방법 2020.11.25 360
92 일반적인 오류를 해결하는 유용한 정보들 file 2020.11.23 3858
91 서로 다른 결과를 한줄로 합쳐서 보여줘야 할 때(GROUP_CONCAT) file 2020.07.28 743
90 엑셀로 되어있는 부분 db로 import하는 방법 2020.07.28 144
89 하나의 쿼리로 여러 테이블의 데이터 삭제 file 2020.07.28 888
88 UPDATE ~ CASE 문을 사용한 조건별 업데이트 file 2020.07.28 1396
87 이벤트 스케줄러 등록하기 file 2020.06.29 303
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved