이글은 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;
2012-10-06
[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은 탭을 구분하지 못하므로 스페이스로 구분하여 입력하기 바랍니다.
피드 구독하기:
글 (Atom)