레이블이 proftp인 게시물을 표시합니다. 모든 게시물 표시
레이블이 proftp인 게시물을 표시합니다. 모든 게시물 표시

2012-10-06

DBMS/MySQL]권한설정

이글은 proftp DB생성과 유저등에 관한 것을 예로 설명하는 것입니다.

1.mysql설정을 한뒤 'proftp'데이터베이스 생성합니다.

#/usr/local/bin/mysqladmin -u proftp -p create proftp

==> 왠일인지 mysqladmin 이 mysql서버에 접근을 못하게 되어있다. 그래서 직접 mysql로 서버에 접속을 한다음 쿼리문장으로 처리



1.1 db유저 생성

1.1.1 db테이블에 proftp사용자 등록
db 테이블 구조
+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | | PRI | | |
| Db | char(64) | | PRI | | |
| User | char(16) | | PRI | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
| Create_tmp_table_priv | enum('N','Y') | | | N | |
| Lock_tables_priv | enum('N','Y') | | | N | |
+-----------------------+---------------+------+-----+---------+-------+

mysql> insert into db values('%', 'proftp', 'proftp', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');



1.1.2 user테이블에 proftp사용자의 권한 추가

user 테이블 구조
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | varchar(60) | | PRI | | |
| User | varchar(16) | | PRI | | |
| Password | varchar(41) | | | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Reload_priv | enum('N','Y') | | | N | |
| Shutdown_priv | enum('N','Y') | | | N | |
| Process_priv | enum('N','Y') | | | N | |
| File_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
| Show_db_priv | enum('N','Y') | | | N | |
| Super_priv | enum('N','Y') | | | N | |
| Create_tmp_table_priv | enum('N','Y') | | | N | |
| Lock_tables_priv | enum('N','Y') | | | N | |
| Execute_priv | enum('N','Y') | | | N | |
| Repl_slave_priv | enum('N','Y') | | | N | |
| Repl_client_priv | enum('N','Y') | | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | | | | |
| ssl_cipher | blob | | | | |
| x509_issuer | blob | | | | |
| x509_subject | blob | | | | |
| max_questions | int(11) unsigned | | | 0 | |
| max_updates | int(11) unsigned | | | 0 | |
| max_connections | int(11) unsigned | | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+

mysql>INSERT INTO user VALUES('localhost','proftp',PASSWORD('비밀번호 '),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('lnx68.thesoft.co.kr','proftp',PASSWORD(비밀번호 '),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('%','proftp',PASSWORD('비밀번호 '),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


host 테이블 구조

+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | | PRI | | |
| Db | char(64) | | PRI | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
| Create_tmp_table_priv | enum('N','Y') | | | N | |
| Lock_tables_priv | enum('N','Y') | | | N | |
+-----------------------+---------------+------+-----+---------+-------+


mysql>INSERT INTO host VALUES('localhost','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql>INSERT INTO host VALUES('lnx68.thesoft.co.kr','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');



1.1.3 proftp DB생성

mysql> create database proftp;

mysql> flush privileges;

[DBMS/MySQL/FreeBSD]proftp와_mysql연동하기



이글은 www.godisgreen.com/wikix/index.php 에서 인용한 글을 기초로 작성된것입니다.



OS : FreeBSD 5.3R

System : intel P3-850 dual

Memory : 512M

HDD : Ultra SCSI 9G*2



FreeBSD(이 하 프비)5.3R의 설치가 되었다고 가정하고 시작합니다.

데몬이나 어플리케이션의 설치는 PORTS 설치를 기본으로 합니다.




Proftp설치



1.proftp를 설치합니다.

# cd /usr/ports/ftp/proftpd-mysql

=> 포트 디렉토리에 보면 proftp와 proftp-mysql이 있습니다. 저는 proftp-mysql을 기준으로 설명합니다.

# make install

(만 약 proftpd에서 설치시

make install clean WITH_MYSQL

과 같이 WITH_MYSQL 옵션을 줘야 한답니다.)


MYSQL설치



2. mysql을 설치합니다.

# cd /usr/ports/databases/mysql40-server

--> mysql 버전이 5.x 가 있지만 proftpd포트 설치시 mysql4.x 클라이언트

를 설치하므로 버전을 맞추기 위해 4.x 를 설치하기로 합니다.

# make install clean WITH_CHARSET=euc_kr BUILD_OPTIMIZED=yes

(

mysql41-server 의 경우 WITH_CHARSET옵션의 값이 euckr로 변경됨.

mysql 4.1버전의 경우

# make install clean WITH_CHARSET=euckr BUILD_OPTIMIZED=yes

)

# /usr/local/bin/mysql_install_db

==> 처음으로 mysql을 사용하기 전에 시스템 DB를 만들기 위한 스크립트를

실행합니다.

위 명령은 mysql을 설치한 후 반드시 한번만 하시기 바랍니다.



3. 설치 확인 작업

# /usr/local/bin : mysql바이너리 파일들이 있나 확인

# /usr/local/etc/rc.d/mysql-server.sh : mysql 기동 스크립트

# /var/db/mysql : mysql 데이터베이스 파일



4. 데몬 시작및 중지하기

4.1. 시작하기

# /usr/local/etc/rc.d/mysql-server.sh start 혹은

/usr/local/bin/mysqld_safe -user=mysql &



4.2 중지하기

# /usr/local/etc/rc.d/mysql-server.sh stop 혹은

/usr/local/bin/mysqladmin -u root shutdown



5. mysql 데이터베이스를 사용하기 전에

반드시 루트 암호를 생성하고 사용하시기 바랍니다.

#/usr/local/bin/mysqladmin -u root password '새로운 비밀번호'

#/usr/local/bin/mysqladmin -u root -h 호스트명 password '새로운 비밀번호'



6. 데이터베이스 사용하기

#/usr/local/bin/mysql -u root -p

password :




** 만약 위와같이 작업시 에러발생하는 경우


5번 작업시 에러발생시에는

1. 우선 mysql서버 데몬을 죽인다.

# kill mysql_pid 혹은

/usr/local/etc/rc.d/mysql-server.sh stop



2. /usr/local/etc/rc.d/mysql-server.sh 파일을 편집해서

========================

편 집내용.

/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} --language=korean > /dev/null &

를 다음과 같이 수정합니다 .

/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} --language=korean --skip-grant > /dev/null &



========================



3. mysql서버 데몬을 다시 시작한다.

# /usr/local/etc/rc.d/mysql-server.sh start



4. 위와같이 하면 권한 테이블을 사용하고 데몬을 띄우게 됩니다.

5. mysql에 접속하여

# /usr/local/bin/mysql -u root -p

6. root의 암호를 변경합니다.

mysql> use mysql;

mysql> select * from user where user = 'root';

mysql> update user SET password = PASSWORD('newpassword');

7. 권한 테이블을 다시 읽는다.

mysql> flush privileges;

8. mysql을 종료

mysql> \q



9. mysql 서버 데몬 죽입니다.

#/usr/local/etc/rc.d/mysql-server.sh stop



10./usr/local/etc/rc.d/mysql-server.sh 파일을 편집해서

========================

편집내용.

/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} -language=korean --skip-grant > /dev/null &

를 다음과 같이 수정합니다 .

/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} -language=korean > /dev/null &



========================

다 시 원상복귀 합니다.



11. mysql 서버를 다시 시작합니다.

#/usr/local/etc/rc.d/mysql-server.sh start



12. 정상적으로 mysql을 사용가능합니다.




proftpd 를 위한 mysql설정하기



1.mysql설정을 한뒤 'proftp'데이터베이스 생성합니다.

#/usr/local/bin/mysqladmin -u proftp -p create proftp

==> 왠일인지 mysqladmin 이 mysql서버에 접근을 못하게 되어있다. 그래서 직접 mysql로 서버에 접속을 한다음 쿼리문장으로 처리



1.1 db유저 생성

1.1.1 db테이블에 proftp사용자 등록

mysql> insert into db values('%', 'proftp', 'proftp', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');



1.1.2 user테이블에 proftp사용자의 권한 추가

mysql>INSERT INTO user VALUES('localhost','proftp',PASSWORD('proftpdeamon'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('lnx68.thesoft.co.kr','proftp',PASSWORD('proftpdeamon'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('%','proftp',PASSWORD('proftpdeamon'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');



mysql>INSERT INTO host VALUES('localhost','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql>INSERT INTO host VALUES('lnx68.thesoft.co.kr','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');



1.1.3 proftp DB생성

mysql> create database proftp;

mysql> flush privileges;









2. DB생성 후에 테이블 구조를 해당 DB(proftp DB)에 만들어 줍니다.



##테이블 groups



##################
# 테이블 groups
##################


Create Table groups(
gname varchar(12) NOT NULL default ''
, gid int(10) unsigned default NULL
, members text
, primary key (gname)
) TYPE=MyISAM;



##################
# 테이블 users
##################


Create Table users(
userid varchar(12) NOT NULL default ''
, uid int(10) unsigned NOT NULL auto_increment
, gid int(10) unsigned default '1000'
, passwd varchar(63) default NULL
, shell varchar(255) default '/bin/sh'
, homedir varcahr(255) default '/home/data'
, count int(10) unsigned NOT NULL default '1'
, valid int(10) unsigned default '0'
, email varchar(50) default NULL
, name varchar(30) binary NOT NULL default ''
, reg_date datetime default NULL
, ip varchar(17) default NULL
, primary key(userid)
, key uid_primary(uid)
, key index_name(name)
) TYPE=MyISAM;






** mysql은 탭을 구분하지 못하므로 스페이스로 구분하여 입력하기 바랍니다.