회사에서 일을 하면서 로그 정보를 DB에 저장하고.. 그 정보를 하루에 한번 파일로 만드는 일을 해야 해서
어떤 방법이 있나 찾아보니 이런 좋은 방법이 있었네요...
머 다들 알고 있었던 방법일 수도 있겠지만...
저는 이걸 몰라서... python에서 쿼리를 날려서는 그 결과를 받아온 다음에
일일이 파일에 써주는 방법을 했었던... ㅜㅜ
이건 정말 모르면 개고생... 이라는 딱 어울리는 표현이죠...
속도도 안나오고... 그러다 찾게 된 것이

mysql -u 유저명 -p DB명 -e "쿼리" -t > 저장할 파일명


이렇게 하면 되면 쿼리에 대한 결과가 바로 파일에 생성이 되었습니다.
완전... 노가다로 만든 로그파일이 한순간에 만들어지는... ㅜㅜ


example)
userid : test
passwd : test
DB : SEARCH
TABLE : SEARCH_LOG
라고 할때...

mysql -utest -ptest SEARCH -e "select * from SEARCH_LOG" -t > log.txt


알아야... 손발이 편하다는게... ㅎㅎㅎ

  • DB API : Python에서 JDBC 같은 역할
  • http://mysql-python.sourceforge.net/ 에서 MySQL 모듈 받음
  • 혹은, sudo apt-get install python-mysql
  • User Guide
  • http://www.devshed.com/c/a/Python/MySQL-Connectivity-With-Python/
  • Python DB API
  • Writing MySQL Scripts with Python DB API
  •  

    1. import MySQLdb
      # DB접속
      db = MySQLdb.connect(db='DB명', user='사용자명', passwd='비밀번호', host='원격서버')

      # 커서생성
      cursor = db.cursor() # 모든 DB 작업은 캐서를 통해서

      # SQL 문 실행 : update 류일 경우에는 영향 받은 레코드 개수
      cursor.execute('''
      SQL 문장
      ''')

      # select
      cursor.execute('select ....')
      cursor.rowcount; # 결과 행수
      cursor.description; # 각 필드 특징 (필드명,데이터형_코드, 표시크기, 내부크기, 정확도, 비율, nullable)

      cursor.fetchone(); # 결과 한개, 더이상 레코드 없으면 None
      curor.fetchmany(); # n 개의 결과. 튜플
      cursor.fetchall(); # 남은 결과 전체. 튜플

      # 튜플이 아닌 사전 형식으로 필드 가져오기
      cursor = db.cursor(MySQLdb.cursors.DictCursor)
      # 위 형태로 커서를 가져오면 fetch*() 메소드 실행 결과가 필드명을 키로 한 사전이다.
    2.  
    3. 커밋/롤백
      db.commit()
    4. db.rollback()

    5. # DB 작업 종료
      cursor.close()
    6. db.close()


    참고로...
    아직 MySQLdb 모듈이 python 버전 2.5까지밖에 지원을 안해주는군요...
     

    mysql -u root mysql
    update user set password=password('new password') where user ='root';
    flush privileges;


    GRANT ALL PRIVILEGES ON  데이터베이스명 TO 계정@localhost IDENTIFIED BY "비밀번호' WITH GRANT OPTION;

    'tip' 카테고리의 다른 글

    sqlite sqlitespy  (0) 2009.04.16
    [linux] linux 작업 스케쥴러.. crontab  (0) 2009.03.09
    linux iconv 설치 및 설정...  (0) 2009.01.08
    linux locale 설정 변경  (0) 2009.01.07
    linux man page...  (0) 2009.01.04

    1. ./configure 시에 에러가 날때..

    증상 : checking for tgetent in -lncurses... no
    checking for tgetent in -lcurses... no
    checking for tgetent in -ltermcap... no
    checking for termcap functions library... configure: error: No curses/termcap library found
    [root@localhost mysql-4.0.13]# make
    make: *** No targets specified and no makefile found. stop.

    왜 이런 메세지가 뜨는건가요?

    해결책 : gcc가 없던지 아니면 패스가 안잡혀있는 경우입니다.

    증상2 : configure: error: no acceptable C compiler found in $PATH
    바로위에 에러메세지가 뜨는데요.,,  설치를잘못한건가요?

    [root@localhost mysql-4.0.13]make를 실행하니까..

    make: *** No targets specified and no makefile found.  멈춤.
    메세지가 뜨네요....

    해결책2 : 리눅스에 gcc가 설치됐는지 확인해보세요.

    rpm -qa|grep gcc

    ---------------------------------

    2. 소스 설치시 NOTE: This is a MySQL binary distribution. 라는 메시지가 나오며

    증상 : It's ready to run, you don't need to configure it! 나옵니다. 이유가?

    해결책 : 바이너리를 받으셨네요. 컴파일이 필요없는.. 그러니깐 이미 컴파일한 겁니다.
    걍 압축풀고 적당한 위치로 이동시키면 됩니다.

    tar zxvf mysql-xx.xx.tar.gz
    mv mysql-xx.xx /usr/local/
    ln -s /usr/local/mysqlxx.xx /usr/local/mysql

    ---------------------------------

    3. mysql을 실행하면 2번 에러가...

    증상 : ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/m
    ysql.sock' (2) 무슨 에러인지요?

    해결법 : 데몬 구동시 ./safe_mysqld --user=mysql & 한번 해보세요.

    그래도 에러가 나면 ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock 해보세요.

    ----------------------------------

    4. mysql.sock 중에 40번에러가 뭐져?

    증상 : ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/m
    ysql.sock' (40)

    해결법 : chown mysql.mysql -R /var/lib/mysql 를 하시기 바랍니다.

    그리고 참고로 php에서의 mysql socket 은 /etc/php.ini 에서 경로를 수정할 수 있습니다.

    --------------------------------

    5. mysql 데몬이 죽어버릴때

    증상: ./mysqld_safe & 실행했습니다.
        chown mysql .. <-- 비슷한 오류가 뜨면서 데몬이 죽어버립니다..

    해결법 : 레드햇 리눅스라면 groupadd 와 useradd 에 '-r' 옵션을 사용해 보세요..

    # useradd -r -d /usr/local/mysql mysql

    이렇게 하면 500 보다 작은 UID, GID를 가진 mysql 그룹과
    사용자가 생성됩니다.

    -------------------------------

    6. mysql 실행시 데몬 바로 죽음

    증상 : 030527 22:33:39  mysqld started
    030527 22:33:39  Can't start server: Bind on TCP/IP port: 주소가 이미 사용 중입니다
    030527 22:33:39  Do you already have another mysqld server running on port: 3306 ?
    030527 22:33:39  Aborting
    030527 22:39:50  /usr/local/mysql/libexec/mysqld: Shutdown 이 완료됨!
    030527 22:39:50  mysqld ended

    해결법 : 3306 포트에 이미 다른 mysqld 가 실행되고 있습니다.

    /mysql/scripts/mysql_config 을 열어서 포트번호 수정하세요.

    -------------------------------

    7. mysql-4.0.12 설치후 데몬이 안띄워지고 바로 죽네요..

    증상 : 정상적으로 소스 설치하고 나서,,
       /usr/local/mysql/bin 에서 아래와 같이 실행하면,,, 데몬이 시작하자 마자 바로 죽습니다.
       ./safe_mysqld Starting mysqld daemon with databases from /usr/local/mysql/var
       mysqld ended

    그래서 에러 메세지를 보기 위해 /usr/local/mysql/var 로 이동하여 도매인.err 파일을
    열어보니,, 아래와 같은 메세지가 있더군요.

    mysqld started
    InnoDB: Started
    Fetal error: Can't open privilege tables: Can't find file: ' ./mysql/host.frm'(errno: 13)'
    Aborting

    해결법 : mysql_install_db 스크립트를 실행해서 초기 테이블을 생성해야 합니다.

           ./mysql_install_db 하시면 됩니다.

    ------------------------------

    8. mysql sock 에러 문제의 확실한 해결법

    증상 : 접속하면 >/var/lib/mysql/mysql.sock 어쩌구 저쩌구 (111) 어쩌구 저쩌구..
    머 이런 에러 나면서 접속 안되신 분들 많으실 겁니다.

    해결법 : 문제는 간단합니다. 디렉토리 퍼미션 문제입니다.....

    killall mysqld

    chmod 755 -R /var/lib/mysql

    chown mysql.mysql -R /var/lib/mysql

    safe_mysqld --language=korean &

    ------------------------------

    9. make 명령어를 실행하면 설치가 해제가 되거든요

    증상 : make[2]: *** No rule to make target `ctype-euc_kr.lo', needed by `bmove_upp.lo'. 멈춤.

    make[2]: 나감 `/usr/local/down/mysql-3.23.38/libmysql' 디렉토리

    make[1]: *** [all-recursive] 오류 1

    make[1]: 나감 `/usr/local/down/mysql-3.23.38' 디렉토리

    make: *** [all-recursive-am] 오류 2

    해결법 : 먼저 LD_LIBRARY_PATH에 모든 라이브러리 경로가 들어가 있어야 합니다.

    이런 경우때문에 필요한 라이브러리를 찾지못해 에러가 납니다.

    거의 필요한 패키지를 설치했는데도 에러가 나면

    LD_LIBRARY_PATH를 확인해볼 필요가 있답니다.

    ------------------------------

    10. mysql 설치시 gcc에러나는데 해결책 좀

    증상 : 에러 내용과 커맨드는 아래와 같습니다.

    # ./configure --prefix=/usr/local/mysql --with-charset=euc_kr

    checking for c++... c++
    checking whether the C++ compiler (c++   ) works... no
    configure: error: installation or configuration problem: C++ compiler cannot create executables.

    해결책 : red hat 8.0 설치시 gcc,gcc++등 여러가지 설치가 안되는게 많더군요.

    rpm으로 찾아서 다 설치하고 나서 컴파일 하면 됩니다.

    rpmfind.net에서 찾으실 수 있습니다. 에러 보고 하나하나 다 설치하시면 됩니다.

    ------------------------------

    11. 인스톨 설치도중 103 에러

    증상 : an error occured move data process: -103
    compenent : server
    mySQL 4.0 설치할 때 잘되다가 이것되문에 설치가 안되네요..
    이전에 깔았던 mySQL 3.23 때문에 그런지.. 영.. 모르겠네요.

    해결책 : mysql이 설치된 폴더를 완전시 삭제하신 후에 다시 받으셔서 설치해보세요.

    -----------------------------

    12. mysql설치 시 invalid user 오류가..

    증상 : chown: mysql: invalid user
    Starting mysqld daemon with databases from /usr/local/mysql/data
    030417 11:42:35  mysqld ended

    데몬실행시 이런 에러가 뜨네요...
    어떻게 해결하면 되죠?

    해결책 : mysql 이란 유져가 유효하지 않다라는 에러로
    현재 mysql이란 계정이 존재하지 않기때문에 나는 에러입니다.

    설치하신 후 mysql이란 그룹과 유저를 생성해주시고
    /usr/local/mysql/ 아래 디렉토리에 대한 권한도 주셔야 제대로 동작할 것 입니다.

    -----------------------------

    13. mysql 4.0.12 설치 시 "Check your system clock" 오류

    증상 : mysql 4.0.12를 설치하는데...
    > ./configure --prefix=/usr/local/mysql --with-charset=euc_kr
    이렇게 했는데 다음과 같은 메세지가 나옵니다.
    checking build system type... i686-pc-linux
    checking host system type... i686-pc-linux
    checking target system type... i686-pc-linux
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... configure: error: newly created file is older than distributed files!
    Check your system clock
    왜 그런건지 알려주세요..

    해결법 : mysql이 개발된 시간보다 현재시간이 늦어서(?) 생기는 문제입니다.

    시간설정으로 간단히 해결할 수 있습니다.

    인터넷(네트웍)이 되는 상황이라면
    rdate -s time.nuri.net (잘못된 시간 설정을 올바르게 바꾸는 명령)를 하시고
    (time.nuri.net <== 이부분은 다른서버를 이용하셔도 무방)
    아니면 date 명령어로 시간을 현재시간으로 설정해주세요...

    예) date 06111800 (6월 11일 저녁6시)

    -----------------------------

    14. 설치시 configure: error: no acceptable cc found in $PATH 에러

    증상 : ./configure 하면 중간에
    configure: error: no acceptable cc found in $PATH
    이라는 글씨가 써지면서 멈춰버리더군요. 다른 버전을 설치해도 마찬가지입니다.

    해결법 : cc 즉 c complier 가 없다는 말입니다

    c 컴파일러가 PATH에 안잡혀 있을 수 있습니다. path를 추가하거나 gcc를 다시 설치하십시요.

    -----------------------------

    15. config시 ERROR: 1062 Duplicate entry 'localhost-root' for key 1

    증상 : mysql 소스설치 config시
    다음과 같은 에러가 나는데요..
    rpm버전 삭제했는데 데몬이 살아 있나?
    ps -ax | grep mysql 하면 암것도 안나오거든요.

    ERROR: 1062 Duplicate entry 'localhost-root' for key 1
    ERROR: 1062 Duplicate entry 'localhost-root' for key 1
    030312 14:58:03 ./bin/mysqld: Shutdown Complete

    해결책 : 캐시에 이전데몬이 살아있기 때문입니다.
    kill 명령으로 프로세스를 완전히 죽이신 다음 다시 설치하시면 됩니다.

    -----------------------------

    16. configure 에러로 "error : No curses/termcap library found" 무슨 에러죠?

    증상 : checking for termcap functions library...

    configure: error : No curses/termcap library found

    해결책 : libtermcap-devel-xxx 패키지가 필요해서 발생하는 에러입니다.

    설치시디를 넣으시고 설치를 하시면 해결됩니다.

    'tip' 카테고리의 다른 글

    linux locale 설정 변경  (0) 2009.01.07
    linux man page...  (0) 2009.01.04
    부팅시 USB키보드가 안먹힐때  (0) 2007.07.27
    모니터 사이즈 비교  (0) 2007.07.18
    Port Scanner  (0) 2007.07.05

    + Recent posts