혼자 관리하면 까먹기 쉽지 않을수는 있지만
어쩌다 root 패스워드를 알수가 없게 됐다 ㅠㅠ

일단 서비스를 중지하고 아무런 인증절차 없이 실행하고 패스워드를 바꾼다.

$ /etc/init.d/mysql stop 또는 kill 명령어를 이용하여 서비스 중지
$ /usr/bin/mysqld_safe --skip-grant-tables 또는 /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
$ mysql -uroot mysql

mysql> UPDATE user SET password=PASSWORD('변경할패스워드') WHERE user = 'root';
mysql> flush privileges;

$ /etc/init.d/mysql stop 또는 kill 명령어를 이용하여 서비스 중지
$ /etc/init.d/mysql start
요즘 iframe 삽입공격이 날로 심각해지고 있다.
ftp 계정을 열어주게 되면 따로 고정아이피가 아닌이상 제어하기도 힘들고
유동아이피라도 지정해서 접속을 제어해주는게 어떨까

주로 ftp 계정정보가 털려서 접속이 되는경우가 많은거 같은데
이건 뭐...대책도 방법도 없다 ㅡ.ㅡ
맨날 패스워드를 바꾸는 수밖에 ... 참 귀찮다.

나는 pure-ftp 를 사용한다.
사용상 편하기도 하고 특히 호스팅할때 참 편한점이 있다. 계정관리면에서... 가상계정셋팅이 참 편하다.
그래서 pure-ftp 설정을 조금 바꿔봤다.
어디서 봤는지 누가 수정햇는지는 모르겠지만
내가 아는 서버에 누군가 ip 제어하는 기능을 추가해놨던데
번거롭기도 하고 쿼리 설정도 잘못해놔서 ㅋ

1. pure-ftp 를 mysql 과 연동해서 설치한다. (이건 알아서 설치잘 할거라 생각하고 생략)

2. users 테이블의 컬럼 수정
   pure-ftp DB 에 보면 users 라는 테이블이 있다.

   alter table users change column Uid Uid varchar(16) not null default '';
   alter table users change column Gid Gid varchar(16) not null default '';
   alter table users add column ipaccess enum(0, 1) not null default '0';

   요부분들은 users 테이블 만들때 추가해도 무방하다.

   Uid랑 Gid 는 수정하지 않아도 된다.
   관리상 문자가 편해서 수정한거다.

   이미 users 테이블이 있다는 전제로 alter 했다.

3. access 테이블 추가
   CREATE TABLE access (
      User varchar(16) not null,
      ip varchar(15) not null,
      memo varchar(255),
      primary key (User, ip)
   )
   
   access 테이블에는 User 에는 계정명, ip 에는 접속허용할 아이피, memo 에는 설명문구를 입력하면 된다.

4. pureftpd-mysql.conf 에서 MYSQLGetPW 와 MYSQLGetUID 를 찾아서 아래로 바꾼다.
   MYSQLGetPW      SELECT IF(a.ipaccess = '0', a.Password, IF (ISNULL(b.User), '', a.Password)) as Password FROM users a LEFT JOIN (SELECT User FROM access WHERE User = '\L' AND ip = '\R') b ON b.User = a.User WHERE a.User = '\L';
   MYSQLGetUID     SELECT IF(a.ipaccess = '0', a.Uid, IF (ISNULL(b.User), '', a.Uid)) as Uid FROM users a LEFT JOIN (SELECT User FROM access WHERE User = '\L' AND ip = '\R') b ON b.User = a.User WHERE a.User = '\L';

셋팅은 요기까지다.

대략 요약하자면 pure-ftp 기본은 users 에 계정정보등을 추가하면서 접속이 가능하게 되는건데
ipaccess 라는 컬럼을 뒀다.
ipaccess 컬럼에 '0' 을 입력하면 ip제어를 하지 않겠다는 뜻이고 '1' 을 입력하면 ip제어를 하겠다는 뜻이다.
ipaccess 컬럼에 '1' 을 입력한경우
access 테이블에 해당 유저, 아이피 그리고 설명을 추가해둔다.
설명은 추가해도 되고 안하지만 관리상 적어놓으면 도움이 될거 같다.

혹시라도 pure-ftp 사용하시는 분들이 도움이 됐으면 하는 마음에...^^
1. 데이터베이스 생성
   CREATE DATABASE IF NOT EXISTS [DB];

2. 유저 생성
   - 지정된 DB에 권한을 지정하여 부여할 경우
      GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON  [DB].* TO [USER]@localhost IDENTIFIED BY "[PASSWD]";
   - 지정된 DB에 모든 권한을 줄경우
      GRANT ALL PRIVILEGES ON  [DB].* TO [USER]@localhost IDENTIFIED BY "[PASSWD]";
   - 특정 계정에 권한을 부여할경우
      GRANT USAGE ON *.* TO [USER]@localhost IDENTIFIED BY "[PASSWD]"
   - root 계정과 동일한 권한을 부여할경우
      GRANT ALL PRIVILEGES ON *.* TO [USER]@localhost IDENTIFIED BY "[PASSWD]";

3. 적용
   FLUSH PRIVILEGES;


매일 쓰면서도 자꾸 헷갈리는게 문법인가보다. ㅡ.ㅡ
엑셀로 저장된 CSV 파일을 mysql 에 업로드 시키려다보니..

아래 문법은 http://dev.mysql.com/doc/refman/5.1/en/load-data.html 에서 발췌한 부분이다.
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number LINES]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...]

로컬경로 /temp/xxx.csv 파일의 내용을 DB 테이블 TABLE1 에 입력하는 예제이다.
컬럼간 구분자는 콤마(,) 이고 컬럼내용은 따옴표(")로 되어 있다.

LOAD DATA LOCAL INFILE '/temp/xxx.csv' INTO TABLE TABLE1 FIELDS TERMINATED BY ',' ENCLOSED BY '"';


블로그 이미지

마법눈

카테고리

분류 전체보기 (113)
Programming & (32)
WordPress (0)
Book (0)
Products & (60)
Picture (10)
ETC (11)