Mysql 사용자 팁

Database 2014. 12. 2. 10:25
mysql 사용시 콘솔내에서 유용하게 사용할 수 있는 방법 몇가지를 정리합니다.

Query 세로 보기
접속자 및 현재 실행중인 Query 확인
테이블 정보 요약

1. 결과 세로로 보기
# 세로보기
mysql> select now()\G
*************************** 1. row ***************************
now(): 2014-12-02 09:30:37
1 row in set (0.00 sec)

#기존의 가로보기
mysql> select now(); 또는 select now()\g 
+---------------------+
| now() |
+---------------------+
| 2014-12-02 09:30:30  |
+---------------------+
1 row in set (0.00 sec)
2. mysql 접속자 및 현재 실행중인 query 확인
mysql> show processlist;
+-------+-----------+-----------------+--------+---------+-------+-------+------------------+
| Id  | User| Host | db  | Command | Time| State | Info  |
+-------+-----------+-----------------+--------+---------+-------+-------+------------------+
| 14965 | test| localhost:54679 | test | Sleep  | 18056 || NULL|
| 15053 | test| localhost:58070 | test | Sleep  | 15126 || NULL|
| 15283 | test| localhost:59917 | test | Sleep  |  7801  || NULL|
| 15362 | test| localhost:50901 | test | Sleep  |  4872  || NULL|
| 15412 | test| localhost:48443 | test | Sleep  |  2672  || select * from TEST_TABLE .......... |
| 15487 | root| localhost| mysql | Query  |  0 | NULL | show processlist |
+-------+-----------+-----------------+--------+---------+-------+-------+------------------+
6 rows in set (0.00 sec)
위와 같이 실행하면 긴 query 의 경우 잘려서 노출이 되게 된다.
긴 query에 대해 전체 출력을 하고자 한다면 아래와 같이 한다.
mysql> show full processlist;
+-------+-----------+-----------------+--------+---------+-------+-------+------------------+
| Id  | User| Host | db  | Command | Time| State | Info|
+-------+-----------+-----------------+--------+---------+-------+-------+------------------+
| 14965 | test  | localhost:54679 | test | Sleep  | 18056 || NULL|
| 15053 | test  | localhost:58070 | test | Sleep  | 15126 || NULL|
| 15283 | test  | localhost:59917 | test | Sleep  |  7801  || NULL|
| 15362 | test  | localhost:50901 | test | Sleep  |  4872  || NULL|
| 15412 | test | localhost:48443 | test | Sleep  |  2672  || select * from TEST_TABLE where devcoding = 10|
| 15487 | root  | localhost | mysql | Query  |  0 | NULL | show processlist |
+-------+-----------+-----------------+--------+---------+-------+-------+------------------+
6 rows in set (0.00 sec)

3. 현재 데이타베이스의 테이블 정보

mysql> show table status\G
*************************** 1. row ***************************
Name: columns_priv
 Engine: MyISAM
Version: 10
Row_format: Fixed
Rows: 0
 Avg_row_length: 0
 Data_length: 0
Max_data_length: 227994731135631359
Index_length: 1024
 Data_free: 0
  Auto_increment: NULL
 Create_time: 2009-03-24 23:25:43
 Update_time: 2009-03-24 23:25:43
Check_time: NULL
 Collation: utf8_bin
 Checksum: NULL
 Create_options:
  Comment: Column privileges
*************************** 2. row ***************************
.
.
.
.


Posted by 다인,보리아빠
,

이번 포스팅은 nslookup을 이용하여 DNS 서버에 접속하여 변경정보를 정확하게 알아 내기 위한 방법입니다.

일반적으로 자신의 PC 네트워크 설정에 DNS 서버(A DNS라고 해두지요) 설정을 해놓고 그 서버에서 주는 정보는 이용하게 됩니다.


www.tistory.com 이라는 도메인에 대한 IP가 변경이 되었거나 했을때 이를 정확하게 알기 위해서는

www.tistory.com 도메인을 관리하는 DNS(B DNS라고 해두지요)에 접속을 하여야만 알수 있습니다.


그 이유는 B DNS에 변경정보가 있을때 그것이 A DNS에 전파되는 시간이 있기 때문입니다.


다르게 생각하면 자신이 DNS를 수정했을때 이것이 다른 서버(예 코넷 DNS)에 전파가 되었는지에도 사용할 수 있습니다.


그럼 nslookup을 통하여 확인하는 방법을 알아보겠습니다.


C:\Users\tistory>nslookup www.tistory.com    #nslookup을 이용하여 조회
서버:    kns.kornet.net   #자신의 PC에서 사용하는 DNS
Address:  168.126.63.1

권한 없는 응답:  #자신의 PC에서 조회한 값
이름:    www.tistory.com
Address:  180.70.93.117

#이제 www.tistory.com 도메인에 대한 DNS 서버를 확인하는 방법입니다.

C:\Users\tistory>nslookup -q=All www.tistory.com   
서버:    kns.kornet.net
Address:  168.126.63.1

권한 없는 응답:
www.tistory.com internet address = 180.70.93.117

tistory.com     nameserver = ns2.daum.net   #아래 두개가 www.tistory.com 도메인을 관리하는 DNS 이지요.
tistory.com     nameserver = ns1.daum.net
ns1.daum.net    internet address = 113.61.106.5
ns2.daum.net    internet address = 113.61.107.5

C:\Users\tistory>nslookup    #nslookup 실행
기본 서버:  kns.kornet.net
Address:  168.126.63.1

> server ns2.daum.net   # 위에서 찾아낸 www.tistory.com 의 DNS인 ns2.daum.net에 접속
기본 서버:  ns2.daum.net   # 접속완료
Address:  113.61.107.5

> set type=All               # All Type 으로 조회하기
> www.tistory.com       # quey 도메인
서버:    ns2.daum.net
Address:  113.61.107.5

www.tistory.com internet address = 180.70.93.117
tistory.com     nameserver = ns1.daum.net
tistory.com     nameserver = ns2.daum.net
ns1.daum.net    internet address = 113.61.106.5
ns2.daum.net    internet address = 113.61.107.5
>

완료!!!

'linux 개발팁' 카테고리의 다른 글

Docker 이미지 Timezone 변경방법  (0) 2018.05.23
SSH 접속시 No Matching Key 문제  (0) 2018.02.22
linux console 꿀 Tip 1  (0) 2014.10.31
Posted by 다인,보리아빠
,

요즘의 웹어플리케이션 개발의 상당수가 Java를 이용한 Spring Frameworks으로 개발을 많이 한다.

Eclipse를 이용하거나 Eclipse 기반의 STS(Spring Tool Suite)을 이용하여 개발을 하게 된다.


대부분의 개발자들은 아래와 같은 식으로 개발을 하게 된다.

Eclipse에서 제공하는 Tomcat 을 이용하여 개발과 디버깅을 한다.

이 경우 개발환경이 대부분이 개인PC(대부분 Windows OS)에서 개발을 하게 된다.

개발과 디버깅시 실제 서비스가 실행되는 Linux 와는 환경적으로 다른점이 많다.


JPDA(The Java Platform Debugger Architecture)는 이러한 환경적인 문제를 해결할 수 있는 한 방법이다.

JPDA를 이용하면 Linux 에 설치 되어 있는 Tomcat내 소스에 대해서 기존에 Eclipse에서 디버깅 하던것을 할 수 있다.

즉 서버(예: LINUX)의 TOMCAT에 접속하여 디버깅을 할 수 있는 것이다.

더 쉽게 이야기해주면 특정 위치에 있는 Tomcat에 대해서 원격으로 디버깅이 가능하다는 것이다.


환경을 보면 

상용서버는 Linux, Tomcat

개발/스테이징 서버도 Linux, Tomcat

개발자가 개발과 디버깅시 : windows, Tomcat

JPDA 를 이용할시 디버깅시  : Linux(개발서버 또는 스테이징), Tomcat #사실 OS 구분없이 어느 Tomcat이든 가능하다.


JPDA를 이용하여 원격으로 Linux 에 있는 Tomcat 에 접속하기 위해서는 사전 작업이 필요하다.


아래 절차를 보면서 세팅을 해보도록 하자.

1. Linux 내 Tomcat JPDA Port 확인 및 Tomcat Start

#tomcat 의 bin 디렉토리로 이동 후 아래 명령 실행하여 JPDA PORT 를 확인한다.
[root@localhost bin]> grep JPDA_ADDRESS= ./catalina.sh
    JPDA_ADDRESS="8000"

#8000번 포트로 확인이 되었다.
#이제 Tomcat을 JPDA 모드로 실행을 시킨다.
[root@localhost bin]> ./catalina.sh jpda start
Using CATALINA_BASE:   /svc/webapp/was/tomcat6026
Using CATALINA_HOME:   /svc/webapp/was/tomcat6026
Using CATALINA_TMPDIR: /svc/webapp/was/tomcat6026/temp
Using JRE_HOME:        /usr/local/jdk1.6.0_20
Using CLASSPATH:       /svc/webapp/was/tomcat6026/bin/bootstrap.jar

# 포트가 정상적으로 열렸는지 확인해 본다.
[root@localhost bin]> netstat -nap | grep :8000
tcp        0      0 0.0.0.0:8000                0.0.0.0:*                   LISTEN      2348/java
# 이상 서버 세팅 끝!

    

2. Eclipse 또는 STS내 Remote Java Application 설정

- 이클립스(STS 포함) 디버그 버튼(벌레)의 화살표를 누른다.


- Debug Configurations... 을 선택한다.


- Remote Java Application 을 더블클릭한다.


- New_Configuration에 정보를 입력한다.

Name : 이름을 바꾸고 싶으면 편집.
Project : Browse 버튼을 선택하여 해당 되는 소스를 선택한다.
Host : 위의 리눅스 서버의 IP를 적어준다.
Port : 위 1번에서 확인하였던
JPDA_ADDRESS="8000"의 8000을 선택한다.

모든게 완료되면 Debug 버튼을 선택한다.


- 정상적으로 완료되면 아래와 같이 Thread 정보가 나오게 된다. 


3. Break Point 설정 및 Debug Perspective 사용

이후는 로컬에서 디버깅 하던 방법과 동일하다. 즉 Breakpoints, Watch, Variables 등등 모두 동일하게 사용하면 된다.
디버깅시에는 꼭 Debug Perspective를 이용하자.
Debug Perspective가 없다면 아래와 같이 추가할 수 있다.
메뉴 Window -> open 
Perspective를 눌러 Debug를 추가하거나 선택하면 된다. 



참고 사항

1. 내가 가지고 있는 소스가 서버와 일치해야 Break point 잡힌 부분이 상이하지 않게 된다. 개발서버(Linux)환경에서 쭈욱 디버깅하고 개발하고자 한다면 Autoftp와 같은 plugin 을 설치하여 소스 수정시 마다 자동으로 개발서버로 적용이 되도록 하면 좋다.

2. Tomcat 에 JNDI를 사용하고 있다면 그것은 그대로 사용된다. 모든 세팅은 서버에 되어 있는대로이며 단순하게 디버깅만 원격으로 되는 것이라고 생각하면 된다.

3. 톰캣과 이클립스로만 적어놓았지만 JPDA는 다른 WAS, 다른 IDE에서도 사용가능하다.

4. JSP 디버깅은 잘 안되기도 하니 참고하세요!



역시 개발자는 디버깅을 잘해야죠!

'디버깅' 카테고리의 다른 글

Android webview 디버깅 하기  (2) 2015.03.16
Posted by 다인,보리아빠
,

행정안전부 홈페이지에 가면 WEB 어플리케이션 개발보안 가이드가 있다.


행정안전부와 한국 인터넷 진흥원이 함께 만든 가이드로 2년 정도 된 자료이지만

항목 항목에 대해서 디테일하게 나와있는 것은 아니지만

보는이가 이해가능하고 전체적인 웹어플리케이션 개발 시 챙겨야할 부분들이 정리되어 있다.


하루하루 지날수록 보안관련하여 많은 방법들이 나오고 있고,

어플리케이션 및 Linux, Tomcat, Apache 등에 대해서도 보안 요소들을 챙겨야 할 것이 많이 있다.


그렇지만 가이드를 통해 기본적으로 Web Application에 대한 시큐어코딩을 습득하고,

문제가 많이 되는 부분에 대해서는 꼭 반영을 해놓기 바랍니다.


요즘은 Mybatis 와 같은 ORM Frameworks을 사용하면서 많이 없어지기도 했지만 SQL Injection 취약점.(예 : PW 없이 로그인)

실행 가능한 파일을 올리는 파일 업로드 취약점.(예 : webshell.jsp 업로드하여 실행)

허가 받지 않은 파일을 다운로드 받는 다운로드 취약점.(예 : /etc/passwd)

Paros와 같은 Proxy 프로그램을 이용한 파라미터 변조 공격. (예 : 10만원짜리를 만원에 사서 뉴스에도 나왔죠)
index.jsp 의 백업을 index.jsp.back 이라고 변경하여 놓는 Backup 파일 노출.(index.jsp.back 호출시 파일 다운로드)

요즘 많이 쓰는 개발자도구로 Client 단 ValidationCheck 는 무용지물이 될 수있는 Developer tool 공격
(예 : Chrome 개발자 도구로 Javascript 무효화 및 값 변경)


위와 같이 기본적인 것들은 꼭 지키면서 개발을 합시다! 



행정안전부 해당 가이드  URLhttp://www.mospa.go.kr/frt/bbs/type001/commonSelectBoardArticle.do?bbsId=BBSMSTR_000000000045&nttId=34439



웹어플리케이션 외에도 시큐어 코딩 가이드가 있으니 참고하시기 바랍니다.

기타 시큐어 코딩 가이드 URL : http://www.mospa.go.kr/frt/bbs/type001/commonSelectBoardArticle.do?bbsId=BBSMSTR_000000000045&nttId=34430

'보안' 카테고리의 다른 글

스마트폰/태블릿 패킷캡처 방법  (0) 2014.10.31
Posted by 다인,보리아빠
,

자신의 스마트폰 또는 태블릿에 대해서 wifi 상태 일때 서버와 주고 받는 데이타의 대해서

패킷 확인을 통해 장치가 어떠한 값들을 주고 받는지 확인이 필요한 경우가 있다.

자신의 서비스의 보안적인 문제점을 찾거나 자신이 쓰고 있는 App들이 서버와 주고 받는

데이타를 확인하고자 하는 니즈가 있다고 생각한다. 


Android/iOS 에뮬레이터를 이용하여 가상으로 확인을 할 수 있겠지만

자신의 PC 데이타가 섞이는 문제가 있고 여러가지 보기 불편한 점이 많습니다.


단 이 방법은 노트북만 가능합니다.

(유선랜카드와 무선랜카드 장착되어 있거나 무선랜카드가 두개가 달려 있는 경우에만 사용이 가능합니다.)


방법은 아래와 같다.

1. 노트북에 랜선을 이용하여 인터넷을 연결한다.

2. 노트북을 Connectify와 같은 프로그램을 이용하거나 OS 내 Ad-hoc 서비스를 이용하여 notebook 이 wifi ap 가 되도록 설정한다.

3. 스마트폰/태블릿을 노트북 AP에 접속한다.

4. wireshark 와 같은 패킷 스니핑 프로그램을 통하여 해당 접속 장치의 IP로 필터링을 걸게되면 해당 장치가 통신하는 모든 패킷이 추출이 가능합니다.

'보안' 카테고리의 다른 글

WEB Application 개발보안 가이드(시큐어코딩)  (0) 2014.11.07
Posted by 다인,보리아빠
,

Chrome PageSpeed는  특정 페이지의 Front-End 단 튜닝 요소를 찾아주는 확장앱이다.

예전에는 스코어도 주었는데 Chrome Extention App에서는 현재 스코어는 빠져 있다.

특정 페이지(예: 메인 페이지)에 대해서 Front-End 단에 튜닝이 필요한 부분에 대해서 

상,중,하로 구분하여 보여주어 사용자가 우선적으로 처리해야 하는 부분과 방법을 제공한다.


사용법을 간단하며 아래와 같다.


1. 크롬 앱스토어에서 PageSpeed Insights 를 검색하여 설치.


2. Chrome 도구메뉴에서 개발자 도구를 선택한다.(windows는 F12, Mac CMD + option + i)


3. 개발자 도구 메뉴중 PageSpeed를 선택 한 후 분석 시작 버튼을 누르면 해당 페이지를 분석한다.

4. 분석이 완료되면 아래와 같이 결과값을 보여준다.
제안사항 요약을 보면 H,M,L 로 구분하여 튜닝이 필요한 부분에 대해서 제안한다.

각각의 부분을 누르면 상세 내용을 제공하므로 항목별로 눌러서 확인해보면 된다.


5. 제안내용 외에 이미 처리 되어 있는 부분은 아래와 같은 항목들이 있다. 실제 튜닝을 하지 않았다면 상당부분이 미 완료 되어 있는 것을 확인할 수 있다. 


Posted by 다인,보리아빠
,

'세미나 자료' 카테고리의 다른 글

GraphQL Overview  (0) 2017.11.24
Netflix falcor Overview slide  (0) 2017.11.24
Nodejs, PhantomJS, casperJs, YSlow, expressjs 에 대해!  (0) 2014.10.31
겁나 빠른 사이트 만들기  (0) 2014.10.31
Posted by 다인,보리아빠
,

옛날에 했던 Front-end 성능 측정 관련 세미나 자료 입니다.



2014/10/31 - [세미나 자료] - Front-End 웹사이트 성능 측정 및 튜닝



Posted by 다인,보리아빠
,