2008.05.14 22:24
mysql 데이터베이스를 추가하면 기본적으로 로컬호스트에서만 접속이 가능 합니다.
mysql-client나 다른 리눅스 서버에서 원격으로 mysql 접속을 하려면 원격 호스트의 접속을 허용해 주어야 합니다. 설정 순서는 아래와 같습니다.
DB라는 db와, 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 등을 설정 한다.
mysql> insert into user (host,user,password) values('xx.xx.xx.xxx','USER',password('pswd'));
Query OK, 1 row affected, 3 warnings (0.00 sec)
mysql> insert into db values('xx.xx.xx.xxx','USER','DB','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');
Query OK, 1 row affected (0.00 sec)
첫번째 user 테이블에 입력한 사항은 xx.xx.xx.xxx 의 아이피에서 USER 계정이 pswd의 패스워드로 접속 할수 있게 설정한 것이며, 두번째 db 테이블에 입력한 사항은 xx.xx.xx.xxx번의 아이피에서 USER 계정이 DB 데이터베이스에 접속하여 사용할 수 있는 권한 설정을 한 것입니다.
3. 추가한 사항을 적용시키고 빠져 나간다.
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
[root@server21010910231 root]#
위와 같이 설정이 완료되면, xx.xx.xx.xxx 번의 아이피를 사용하는 서버에서 원격으로 mysql에 접속할 수 있게 됩니다.
단, USER 라는 db계정이 DB 라는 데이터베이스에만.. ^^
4. 호스트 주소에 아래과 같이 특정 아이피 대신 % 를 입력하면 어느곳에서나 원격으로 mysql 접속이 가능하게 됩니다.
아래와 같이 사용할 경우, 사용이 편리 하긴 하겠지만, 보안상 취약 하기 때문에 권장 하지는 않습니다. ^^
mysql> insert into user (host,user,password) values('%','USER',password('pswd'));
Query OK, 1 row affected, 3 warnings (0.00 sec)
mysql> insert into db values('%','USER','DB','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');
Query OK, 1 row affected (0.00 sec)
=================================================================================
Host '135.79.246.80' is not allowed to connect to this MySQL server
SELECT Host FROM mysql.user WHERE user='root';
INSERT INTO mysql.user (host,user,password) VALUES ('%','root',password('패스워드')); GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;
INSERT INTO mysql.user (host,user,password) VALUES ('111.222.%','root',password('패스워드')); GRANT ALL PRIVILEGES ON *.* TO 'root'@'111.222.%'; FLUSH PRIVILEGES;
INSERT INTO mysql.user (host,user,password) VALUES ('111.222.33.44','root',password('패스워드')); GRANT ALL PRIVILEGES ON *.* TO 'root'@'111.222.33.44'; FLUSH PRIVILEGES;
DELETE FROM mysql.user WHERE Host='%' AND User='root'; FLUSH PRIVILEGES;