* 실행환경 *
OS: Ubuntu 10.04
apt-get!..
apt-get은 리눅스에 사용하는 소프트웨어를 설치, 제거, 업그레이드를 할 때 쓰는 소프트웨어 관리 프로그램이다.
우분투에서는 이 소프트웨어들을 '패키지' 라고 부른다. 우분투에서도 패키지를 관리할때 apt-get을 사용한다.
패키지 설치에는 root 계정 암호가 필요하다.
설치확인
우선, 내가 설치하고자 했던 mysql-server 5.1 이 설치되어있는지 살펴보려면
dpkg -l 명령을 사용한다.
설치 목록 중에서 내가 원하는 내용을 뽑아내기 위해 grep 명령을 사용하였다. grep 명령은 인자로 정규식을 받을 수 있다. 자세한 것은 'grep 사용법'으로 검색해보면 된다.
dpkg -l | grep mysql
설치
설치법은 아주 간단하다. apt-get install 명령 하나면 끝난다. 인자로 설치하고 싶은 패키지의 이름을 넣는다.
중간 중간에 y/n? 을 물어볼때 적절히 선택해주고, root 암호를 물어볼 때 암호를 넣어주면 설치가 아주 잘 된다.
난 이미 설치했지만 한번 더 apt-get install mysql-server-5.1 명령을 쳐보니 이미 최신 설치되어있다고 나온다.
root@playground2010:~# apt-get install mysql-server-5.1
Reading package lists... Done
Building dependency tree
Reading state information... Done
mysql-server-5.1 is already the newest version.
The following packages were automatically installed and are no longer required:
linux-source-2.6.32
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 63 not upgraded.
Mysql 초기 설정하기!...
패스워드
Mysql을 처음 설치했을 때는 root에 패스워드가 걸려있지 않은 상태이다. 패스워드를 걸어주자.
mysqladmin -u root password your-new-password
위 명령에 빨간 부분에 새로운 패스워드를 넣으면 된다. 패스워드를 한번 더 물어보는데 초기에 패스워드가 없는 상태이므로 그냥 엔터를 치면 된다.
외부에서 접속 할수 있도록 하기 - 1.외부접속 계정
여기부터 아주 중요하다. 로컬에 mysql을 설치할때와는 달리, 서버에 mysql을 설치하고, 외부에서 여기에 언제든 접속할 수 있게 하기 위해선 설정이 조금 더 필요하다. 설정은 http://powerhan.tistory.com/31 이 곳을 특히 참조하였다. 너무 도움이 되었다.^^
우선 외부에서 접속할수 있는 계정을 만들어야 한다. 잘은 모르지만, mysql 이라는 데이터베이스 안의 user와 host라는 테이블에서 계정을 관리하는것 같다. 그냥 한번 구경 해보았다.
root@playground2010:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 5.1.41-3ubuntu12.6 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec)
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> desc user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+
39 rows in set (0.00 sec)
mysql> desc host;
+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| Db | char(64) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
+-----------------------+---------------+------+-----+---------+-------+
20 rows in set (0.00 sec)
mysql>
...
여기부터가 본론.
계정을 만드는 명령은 다음과 같다.
grant all privileges on *.* to 'USERNAME'@'%' identified by 'PASSWORD';
빨간 부분을 적절히 고치면 된다. 나는 외부에서 root로 접속할 것이기 때문에 root라고 넣었다.
가장 중요한 것은 초록색으로 표시한 % 이다. %는 모든 호스트에서 접속 가능함을 의미한다.
뭐 바뀐거 있나 하고 user 테이블을 조회해 보았다.
mysql> select user, host from user;
+------------------+---------------------------+
| user | host |
+------------------+---------------------------+
| root | % |
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| root | localhost |
| root | playground2010.cafe24.com |
+------------------+---------------------------+
5 rows in set (0.00 sec)
외부에서 접속 할수 있도록 하기 - 2.외부접속 차단 해지하기
/etc/mysql/my.cnf 에는 bind-address = 127.0.0.1 이라는 부분이 있다. mysql에 접속하는 호스트 주소를 127.0.0.1 으로 설정해 놓고 그 외의 접근은 차단해버리기 위해 설정된것이다. 이 부분을 # 으로 주석 처리해버리면 외부에서도 접속이 가능하다.
vi 로 열어서 편집하면 된다.
vi /etc/mysql/my.cnf 명령으로 연 후,
편집은 해당 줄을 찾아가서 명령모드에서 i 를 눌러 끼워넣기 모드로 들어간 후, # 로 주석처리후, esc 로 다시 명령모드로 빠져나온 후 , :w 으로 저장하고, :q 로 vi를 닫으면 끝!. 자세한건 'vi 사용법' 을 검색하면 된다.
그리고 변경된 설정을 적용하기 위해 반드시 다음 명령어로 restart 해준다.
/etc/init.d/mysql restart
여기까지 하면 외부에서도 마음껏 접속이 가능하다. 끝!
* 참고한 사이트들 *
- mysql 사용법 : http://gpgstudy.com/gpgiki/BackLinks? page=MySQL%EC%97%90%EC%84%9C%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%99%80%20%EB%8D%B0%
EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%20%EB%A7%8C%EB%93%A4%EA%B8%B0
- mysql 외부 접속 설정 : http://powerhan.tistory.com/31