1. MySQL 사용자 권한 확인

 

1-1. 기본권한 조회

# mysql 접속
mysql -u root -p
# mysql DB 접근
mysql> use mysql 
# 기본 권한 조회
mysql> select * from user where user = [사용자ID]

 

1-2. 사용자 권한 조회

# 사용자별 권한 확인
mysql> SHOW GRANTS FOR '사용자계정'@'호스트';
# 접속된 계정 권한 확인
mysql> SHOW GRANTS FOR CURRENT_USER;

 

2. MySQL 사용자 권한 추가

예)

GRANT ALL PRIVILEGES ON DB이름.테이블이름 TO 아이디@호스트 IDENTIFIED BY '비밀번호' with grant option;

 

# 권한 종류

- ALL PRIVILEGES : 모든 권한 추가 

- SELECT, INSERT, UPDATE, DELETE, ... : 권한을 일부분을 추가 

 

# 적용될 DB 및 테이블 

- DB이름.테이블이름 : *.* 시 모든 DB, 모든 Table 권한 부여 

 

with grant option 옵션

- with grant option : GRANT를 사용할 수 있는 권한 추가 

 

 

 

 

1. DB 덤프(dump) 및 복구

# 전체 DB dump 및 복구
./mysqldump -u [계정] -p  --all-databases > [생성dump파일 이름].sql
./mysql -u [계정] -p < [생성dump파일 이름].sql

# 특정 DB dump 및 복구
./mysqldump -u [계정] -p [DB 이름] > [생성dump파일 이름].sql
./mysql -u [계정] -p [DB 이름] < [생성dump파일 이름].sql

 

2. 테이블 덤프(dump) 및 복구

# 테이블 dump 및 복구
./mysqldump -u [계정] -p [DB 이름] [Table 이름1] [Table 이름2] .. > [생성dump파일 이름].sql
./mysql -u [계정] -p [DB 이름] < [생성dump파일 이름].sql 

 

3. 데이터 덤프(dump) 및 복구

# DB 데이터 dump 및 복구
# 테이블 전체 데이터 dump
- ./mysqldump -u [계정] -p -t [DB 이름] [Table 이름1] > [생성dump파일 이름].sql
# 조건에 해당하는 데이터 dump
- ./mysqldump -u [계정] -p [-w '조건절'] [DB 이름] [Table 이름1] > [생성dump파일 이름].sql

- ./mysql -u [계정] -p [DB 이름] [Table 이름1] < [생성dump파일 이름].sql

MySQL 원격 접속 허용

MySQL을 설치를 진행하게 되면 기본적으로는 로컬에서만 접속이 가능하도록 설치가 됩니다. 

이런 설정을 외부에서 DB를 접속 할 수 있게 변경을 해줘야 합니다. 

 

1. MySQL 접속 IP 확인

5.7 이상 버전 : SELECT Host,User,plugin,authentication_string FROM mysql.user;

5.6 이하 버전 : SELECT Host,User,plugin,password FROM mysql.user;

위에 있는 명령어로 확인이 가능합니다. 

 

mysql> SELECT Host,User,plugin,authentication_string FROM mysql.user;

+-----------+---------------+-----------------------+-------------------------------------------+
| Host      | User          | plugin                | authentication_string                     |
+-----------+---------------+-----------------------+-------------------------------------------+
| localhost | root          | mysql_native_password | *97925E5A498F7FDBC94DAC363A9753359A6E14D9 |
| localhost | mysql.session | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys     | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+---------------+-----------------------+-------------------------------------------+

출력된 결과를 보면 root인 사용자로 DB를 외부에서 접속시 localhost에만 접속이 가능하게 되어 있어 접속이 불가합니다. 

 

2. 외부 IP 추가

외부 IP접속이 추가하는 방법은 3가지 정도로 나눈다. 

2-1. 모든 ip에서 접속시 허용

GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%' IDENTIFIED BY '패스워드';

FLUSH PRIVILEGES;

 

2-2. 특정 ip대역에 접속시 허용

GRANT ALL PRIVILEGES ON *.* TO '아이디'@'111.222.%' IDENTIFIED BY '패스워드'; 

FLUSH PRIVILEGES;

 

2-3. 특정 단일 ip에서 접속시 허용

GRANT ALL PRIVILEGES ON *.* TO '아이디'@'111.222.33.44' IDENTIFIED BY '패스워드';

FLUSH PRIVILEGES;

 

3. 등록 확인 후 적용

등록이 끝났다고 하면 SELECT Host,User,plugin,authentication_string FROM mysql.user; 명령어로 확인 후 외부에서 다시 접속을 시도해 봅시다. 

 

 

 

 

scp(Secure Copy) 명령어

scp는 서로 다른 서버가 네트워크가 연결되어 있는 상태에서 원격으로 파일을 전송을 할 수 있는 명령어입니다. 

 

로컬에서 원격지에 있는 파일을 가져오거나, 원격지에서 로컬로 파일을 가져오는데 사용합니다. 

 

1. 연격지에서 로컬로 파일 보내기

scp [옵션] [원본 위치] [로컬계정@IP:파일생성 위치]

 

예)

# scp -P 8000 /home/text1.txt root@111.111.111.111:/home/text2.txt

 

서로 서버간의 통신은 8000포트를 사용하면서 /home/text1.txt. 파일을 111.111.111.111 서버에 있는 /home 디렉토리 아래 text2.txt 파일로 복사를 한다. 

 

2. 로컬에서 원격지에 있는 파일 가져오기

scp [옵션] [원격지계정@IP:가져올 파일 위치] [파일생성 위치]

 

예)

# scp -P 8000 root@111.111.111.111:/home/text1.txt /home/text2.txt

서로 서버간의 통신은 8000포트를 사용하면서 111.111.111.111서버에 /home디렉토리 아래에 text1.txt 파일을 /home 디렉토리 아래 text2.txt 파일로 복사를 한다. 

3.옵션

옵션 설명
-r 디렉토리를 전체 복사
-P(대문자) 지정된 포트로 연결(기본 22번)
-p(소문자) 복사될 대상의 권한, 속성 등 그대로 유지
-c 압축해서 복사
-v 실행과정 출력

 

제이쿼리(Jquery) 이벤트 종류

.bind( eventType, handler ) 바인드 함수를 사용하면서 요소에 이벤트를 적용시 eventType이 있습니다.

eventType은 선언된 이벤트 외 다른 이벤트를 요소에 주어진다고 해도 이벤트 핸들러가 실행이 되지 않습니다.

이런 이벤트는 키보드, 마우스, 화면 등.. 여러가지가 존재를 합니다.

 

1. 제이쿼리(Jquery) 이벤트 종류 표

1.1 키보드 이벤트

이벤트 설명
keydown 키보드 버튼을 눌렀을 때 이벤트 발생
keyup 키보드 버튼을 누른 상태에서 떼었을때 이벤트 발생
keypress 키보드 버튼을 계속 누르고 있는 상태에 이벤트 발생

1.2 마우스 이벤트

이벤트 설명
click 마우스를 클릭 했을 때 이벤트 발생 
dbclick 마우스를 더블클릭 했을 때 이벤트 발생
mouseenter 부모 요소에서 이벤트 걸린 요소로 마우스 진입시 이벤트 발생
mouseleave 이벤트 걸린 요소에서 부모 요소로 마우스 진입시 이벤트 발생
mouseover 이벤트 걸린 요소와 자식요소에 마우스 진입시 이벤트 발생
mouseout 이벤트 걸린 요소에서 부모 요소로 마우스 진입시 이벤트 발생
hover mouseenter, mouseleave 이벤트를 같이 적용 시킵니다.
mouseup 이벤트가 걸린 요소에서 마우스 클릭시 이벤트 발생

1.3 입력 폼 이벤트

이벤트 설명
blur 포커스된 입력 폼에서 밖으로 나갈때 이벤트 실행
focus 입력 폼으로 포커스 될때 이벤트 실행
submit 폼이 submit 시킬때 이벤트 실행
change 입력 폼에 값이 변경이 될때 이벤트 실행
select  

1.4 기타 이벤트

이벤트 설명
resize 브라우저 창 크기가 변할 때 이벤트 발생
ready 현재 페이지 문서가 전부 로드 되었을 때 이벤트 발생
unload 현재 페이지 문서에서 다른 페이지로 이동할 때 이벤트 발생

1. 제이쿼리(Jquery) 이벤트  등록, 제거

요소에 이벤트 핸들러를 지정하기 위해서 bind() 및 제거에 해당하는 unbind() 함수를 사용해 각각에 요소에 이벤트 핸들러를 추가할 수가 있습니다.

 

 

2. 제이쿼리(Jquery) 이벤트  등록 .bind()

<input type="button" id="btn">

<script type="text/javascript"> 
	$("#btn").bind("click",function(){
		alert("클릭");
	}); 
</script>

.bind(eventType,handler)

id가 btn이라는 요소에 이벤트 핸들러를 추가를 합니다. eventType은 click, handler는 클릭이라는 문구를 출력하는 알럿창이 나오도록 함수를 지정합니다.

 

이렇게 되면 id가 btn요소를 클릭시 '클릭'문구가 나오는 알럿창이 화면이 표시가 됩니다.

 

 

3. 제이쿼리(Jquery) 이벤트  제거 .unbind()

<input type="button" id="btn">

<script type="text/javascript"> 
	$("btn").unbind();
</script>

.unbind([eventType] [, handler])

id가 btn인 요소에 추가된 이벤트를 제거합니다.

1. 매개변수가 없으면 모든 이벤트 제거

2. eventType 지정시 지정된 이벤트 제거

3. handler 지정시 click에 대한 이벤트는 남아있어도 핸들러에 해당되는 부분이 제거

 

1. 제이쿼리(Jquery) Ajax

Ajax는 웹 페이지를 다시 요청하지 않고 동적으로 서버와 HTTP 통신이 이루워져 데이터를 처리하는 방식이다.

Ajax는 또한 프레임워크 중에서도 많이 사용을 하는 편이여서 알아뒀다가 사용을 하면 편하게 작업을 진행을 할 수 있습니다.

 

 

2. 제이쿼리(Jquery) Ajax 사용법

<input type="button" id="ajaxBtn">
<div id="printText"></div>
<div id="printError" style="color:red;"></div>

<script type="text/javascript"> 
	$("#ajaxBtn").bind("click",function(){
		$.ajax({
			url : "/rest/rest.jsp",		// 서버로 통신할 URL 주소
			data : {name:"홍길동"},	// 서버로 보낼 데이터
			method : "POST",		// HTTP 요청 메서드 [ "GET", "POST" ]  
			dataType : "text",			// 서버에서 보내줄 데이터 타입 [ "json", "xml", "text", "html" ]
			success : function(data){
				// 성공 콜백 함수 
			},
			error : function(jqXHR,status,error){
				// 실패 콜백 함수 
			},
			complete : function(){
				// 처리 후 콜백 함수 
			}
		})
		
		// 성공 체이닝
		.done(function(data){  
			$("#printText").html("data : " + data);
		})  
		
		// 실패 체이닝
		.fail(function(jqXHR,status,error){ 
			$("#printError").html("xhr : " + xhr + "<br/> error : " + error + "<br/> status : " + status);
		})
		
		// 처리 후 체이닝
		.always(function(){
			alert("처리 끝");
		})				
	});
</script>

1. 성공 처리 -> 성공 콜백 함수(success) -> 처리 후 콜백 함수(complete) -> 성공 체이닝(.done) -> 처리 후 체이닝(.always)

2. 실패 처리 -> 실패 콜백 함수(error) -> 처리 후 콜백 함수(complete) -> 실패 체이닝(.fail) -> 처리 후 체이닝(.always)

 

 

3. Ajax 사용 옵션

옵션 설명
url URL 주소 서버 URL 주소 또는 같은 서버 페이지 위치
data name : 홍길동 key:value 쌍으로 된 데이터
method "GET", "POST" 서버 요청 메소드
dataType "json", "xml", "text", "html" 서버에서 보내주는 데이터 타입

제이쿼리(Jquery) 필터링 선택자#4

제이쿼리에 요소를 선택 후 선택한 요소를 필터링하기 위해 제이쿼리에서 제공하고 있는 메서드를 사용해 요소를 다시 선택하는 방법에 대해서 알아보겠습니다.

 

 

1. 제이쿼리(Jquery) 필터링 함수 표

선택자 예시 설명
.first() $("#selector").first() 선택된 요소 중에서 첫 번째 요소 선택
.last() $("#selector").last() 선택된 요소 중에서 마지막 요소 선택
.eq() $("#selector").eq(index) 선택된 요소 중에서 index에 해당하는 요소 선택
.filter() $("#selector").filter( [selector] ) 선택된 요소 중에서 해당 요소가 있으면 해당 요소를 선택
.not() $("#selector").not( [selector] ) 선택된 요소 중에서 해당 요소가 있으면 해당 요소를 제외한 나머지 요소 선택
.has() $("#selector").has( [selector] ) 선택된 요소 중에서 해당 요소가 자식으로 되어 있으면 해당 요소 선택
.is() $("#selector").is( [selector] ) 선택된 요소 중에서 해당 요소가 있으면 true 값을 반환
.slice()

$("#selector").slice(index,index)

선택된 요소 중에서 index 범위에 해당하는 요소 선택

 

 

1.1 제이쿼리(Jquery) 필터링 사용 예시

1.1.1 .first() .last() 함수 사용

<div>
	<ul>
		<li>1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
		<li>5</li> 
		<li>6</li>
	</ul>
</div> 
<script type="text/javascript">
	$("li").first().css("color","red");
	$("li").last().css("color","red");
</script>

결과값

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

선택된 li 전체 태그들 중에서 처음과 마지막에 해당하는 1, 6인 요소가 선택됩니다.  

 

 

1.1.2 .eq() 함수 사용

<div>
	<ul>
		<li>1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
		<li>5</li> 
		<li>6</li>
	</ul>
</div> 
<script type="text/javascript">
	$("li").eq(2).css("color","red");
</script>

결과값

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

선택된 li 전체 태그들 중에서 index가 2번인 3번째 li 요소가 선택이 됩니다.

index 번호는 0번 부터 시작이 된다.

 

 

1.1.3 .filter() 함수 사용

<div>
	<ul>
		<li>1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
		<li>5</li> 
		<li>6</li>
	</ul>
</div> 
<script type="text/javascript">
	$("li").filter(":odd").css("color","red");
</script> 

결과값

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

선택된 li 전체 요소 중에서 filter에 해당하는 짝수 요소들만 선택이 됩니다.

 

 

1.1.4 .not() 함수 사용

<div>
	<ul>
		<li>1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
		<li>5</li> 
		<li>6</li>
	</ul>
</div> 
<script type="text/javascript">
	$("li").not(":odd").css("color","red");
</script>

결과값

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

선택된 li 전체 요소 중에서 not에 해당하는 짝수가 아닌 홀수 요소들을 선택이 됩니다.

 

 

1.1.5 .has() 함수 사용

<div>
	<ul>
		<li><span>1</span></li>
		<li><span>2</span></li>
		<li>3</li>
		<li>4</li>
		<li>5</li> 
		<li>6</li>
	</ul>
</div> 
<script type="text/javascript">
	$("li").has("span").css("color","red");
</script>

결과값

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

선택된 li 전체 요소 중에서  has에 해당하는 자식요소가 span를 갖는 li 태그만 선택이 됩니다.

 

 

1.1.6 .is() 함수 사용

<div>
	<ul>
		<li id="selector">1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
		<li>5</li> 
		<li>6</li> 
	</ul>
</div> 
<script type="text/javascript">
	var flag = $("li").is("#selector");
	if(flag){
		$("#selector").css('color','red');
	}
</script>

결과값

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

선택된 li 전체 요소 중에서 id가 selector 값이 있으면 true 값을 반환하는 기능입니다.

 

 

1.1.7 .slice() 함수 사용

<div>
	<ul>
		<li>1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
		<li>5</li> 
		<li>6</li> 
	</ul>
</div> 
<script type="text/javascript">
	$("li").slice(1,2).css('color','red');
</script> 

결과값

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

선택된 li 전체 요소 중에서 slice에 해당하는 인덱스가 1부터 2이전 인덱스에 해당 하는 요소를 선택합니다.

.slice(startIndex, endIndex) index는 0부터 시작 startIndex(포함) 부터 endIndex(미포함) 이전까지 해당하는 요소

.slice(startIndex) startIndex(포함) 부터 마지막 요소(포함)까지 해당하는 요소 선택

+ Recent posts