Mysql 외부에서 원격접속 가능하게 하기
아래와 같이 설정해 줍니다.
Mysql 관리자(root)로 로그인 합니다.
Mysql> use mysql;
Mysql> update db set host='%' where user='user' and host='localhost';
Mysql> update user set host='%' where user='user' and host='loccalhost';
Mysql> flush privileges;
Mysql> quit
ps > % - 모든 호스트에 대한 접속 허용
xxx.xxx.xxx.xxx - 해당 아이피에 대한 접속만 허용
패스워드 설정
? MySQL Password 설정
/usr/local/mysql/bin/mysqladmin -u root password "암호"
? 비번을 잊어 버렸을 때…
- mysql root 비밀번호 잊어 먹었을 때
[root@localhost local]# service mysqld stop
[root@localhost local]# /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
[root@localhost local]# mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2 to server version: 4.0.20-log
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql> use mysql
Database changed
mysql> update user set password=password('비밀번호') where user='root';
Query OK, 2 rows affected (0.02 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql>flush privileges;
mysql> exit
Bye
[root@localhost local]# service mysqld stop
[root@localhost local]# service mysqld start
? MySQL Dump(dump시 기본 character set = utf8 입니다.)
- mysqldump ?uroot ?p <database명> --default-character-set=euckr > <파일명>
mysql 데이터베이스를 추가하면 기본적으로 로컬호스트에서만 접속이 가능 합니다.
mysql-client나 다른 리눅스 서버에서 원격으로 mysql 접속을 하려면 원격 호스트의 접속을 허용해 주
야 합니다. 설정 순서는 아래와 같습니다.
fd_db라는 db와, fd_user라는 db 계정이 생성되어 있는 상태에서 원격 접속 허용 설정을 하겠습니다.
1. mysql root 계정으로 mysql db에 접속한다.
[root@server21010910231 root]# /usr/local/mysql/bin/mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10 to server version: 5.0.18-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use mysql;
Database changed
mysql>
2. user table과 db 테이블에 접속할 호스트의 주소, 계정, 패스워드, db 등을 설정 한다.
1) mysql> insert into user (host,user,password) values('10.30.100.150','fd_user',password('fd!#%'));
Query OK, 1 row affected, 3 warnings (0.00 sec)
mysql> insert into db values('10.30.100.150','fd_db','fd_user','y','y','y','y','y','y','y','y','y','y');
Query OK, 1 row affected (0.00 sec)
첫번째 user 테이블에 입력한 사항은 10.30.100.150 의 아이피에서 fd_user 계정이 fd!#%의 패스워드로
접속 할수 있게 설정한 것이며,
두번째 db 테이블에 입력한 사항은 10.30.100.150번의 아이피에서 fd_user 계정이 fd_db 데이터베이스에
속하여 사용할 수 있는 권한 설정을 한 것입니다.
2) 사용자 생성 & 사용자에게 DB할당
shell> mysql --user=root -p mysql
mysql> INSERT INTO user VALUES('localhost','사용자',PASSWORD('비밀번호'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user VALUES('%','사용자',PASSWORD('비밀번호'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO d
(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES
('localhost','DB명','사용자','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES('%','DB명','사용자','Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES; (or shell prompt: mysqladmin -u root -pxxxx reload)
CASE 2: GRANT명령을 이용한 사용자 생성(이 방법이 권장된다)
kang이라는 DB를 만들고, 이 DB를 아래에서 나열된 권한을 가진 kang이라는 사용자를 생성
create database kang;
GRANT USAGE ON DB이름.* TO 사용자ID@접속호스트 IDENTIFIED BY "패스워드"
grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on kang.* to kang@localhost identified by 'kang';
grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on kang.* to kang@'%' identified by 'kang';
mysql> create database kang;
Query OK, 1 row affected (0.00 sec)
mysql> grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on kang.* to kang@localhost identified by 'kang';
Query OK, 0 rows affected (0.00 sec)
mysql> grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on kang.* to kang@'%' identified by 'kang';
Query OK, 0 rows affected (0.01 sec)
3. 추가한 사항을 적용시키고 빠져 나간다.
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> exit]
Bye
[root@server21010910231 root]#
위와 같이 설정이 완료되면, 10.30.100.150번의 아이피를 사용하는 서버에서 원격으로 mysql에 접속할
수 있게 됩니다. 단, fd_user 라는 db계정이 fd_db 라는 데이터베이스에만.. ^^
4. 호스트 주소에 아래과 같이 특정 아이피 대신 % 를 입력하면 어느곳에서나 원격으로 mysql 접속이
가능하게 됩니다.
아래와 같이 사용할 경우, 사용이 편리 하긴 하겠지만, 보안상 취약 하기 때문에 권장 하지는 않습니다. ^^
mysql> insert into user (host,user,password) values('%','fd_user',password('fd!#%'));
Query OK, 1 row affected, 3 warnings (0.00 sec)
mysql> insert into db values('%','fd_db','fd_user','y','y','y','y','y','y','y','y','y','y');
Query OK, 1 row affected (0.00 sec)
모든것을 마치고 마지막에 꼭 할것!
mysql>flush privileges;
'Web Programing! > Mysql' 카테고리의 다른 글
[MYSQL] MySQL DUMP 백업 및 복원 (0) | 2011.09.10 |
---|---|
[MYSQL] mysql 외부접속 (0) | 2011.09.10 |
[MYSQL] Mysql 5.0 계정생성, 디비생성 (0) | 2011.09.10 |
[MYSQL] Mysql 5.0 계정생성, 디비생성후에 할것 (0) | 2011.09.10 |
[MYSQL] mysql 명령어들 (0) | 2011.09.10 |
[MYSQL] 날짜함수를 이용한 데이터 가져오기 (date_add, date_sub) (0) | 2011.09.10 |
[MYSQL] 테이블에 칼럼추가,수정,삭제,사용중지,제약조건추가하기 (0) | 2011.07.07 |