목록데이터베이스 (23)
정보보안공부
Sql Injection을 공부하던 도중에 Query box로 접속할 때 비밀번호가 만료되었다는 문구를 보고 새로운 비밀번호를 입력했는데 오류가 발생했다. 구글링을 해보니 관리자 계정에서 비밀번호를 설정할 수 있어서 입력했더니 성공했다. sqlplus "/as sysdba"를 이용하는거는 찾았는데 sqlplus를 노트북 pc에서는 실행해봤는데 가상머신에서 어떻게 실행하나 고민하다가 su - oracle 를 이용해서 실행했다. alter user hr ( hr계정을 나타냄 ) identified by hr ( hr계정의 비밀번호를 나타냄 ) 은 나중에 비밀번호를 까먹을 까봐 패스워드도 hr로 변경했다.
데이터들을 조회하기위해서는 SELECT쿼리는 반드시 필요하다. SELECT쿼리를 어떻게 사용하는가에 따라서 조회하는 내용을 깔끔하게 정리할 수 있다. 하지만 데이터가 무수히 많을때 같은 결과값이 조회되지만 방법에 따라 SQL수행 속도가 늦어지는 경우도 있으므로 SELECT쿼리를 조회하는 여러가지 방법에 대해 알아보자. 먼저 SELECT쿼리를 다음과같은 형식을 따른다. SELECT 컬럼 FROM 테이블명 # desc -> 해당 테이블에 있는 컬럼 정보들을 출력해준다. -> 테이블 목록을 출력한다. -> 해당 테이블의 컬럼이름과 타입을 출력해준다. # 컬럼에 별칭을 사용해보기 'Good morning'이라는 문자열을 "Hello"라는 별칭으로 출력했다 별칭은 " " 큰따음표 안에 사용한다. -> dual이라..
오라클환경 구축하기데이터베이스를 다루기위해 먼저 오라클을 설치하고 로그인하는 것을 알아보자.먼저 설치는 오라클사이트에서 다운을받고 아래와같이 진행하면된다.나는 윈도우 버전에서 실행하기 때문에 주의하기 바란다. -> 처음 오라클에 접속하는 비밀번호이므로 신중하게 작성한다. 오라클을 실행해보자 window에서 실습을 진행하므로 window검색창에 sqlplus를 입력해 sqlplus 창을 실행한다. 설치시 작성한 비밀번호을 입력해 로그인한다.# 사용자 생성 user02라는 이름의 계정에 tiger이라는 비밀번호를 만들었다.# 사용자 권한부여 user02라는 계정에 권한을 부여했다. show user을 하게되면 현재 로그인한 사용자계정을 알려준다.
# Left join ( 왼쪽 테이블만 존재하는 것 출력) -> select * from A left join B on A.userID = B.userID where B.userID is null - A 테이블과 B 테이블에서 userID라는 컬럼에 값이 B에는 없고 A에만 존재하는 행을 출력한다. - 물건을 사지않은 사람의 회원정보만 조회할수있다. ( A : 회원테이블, B : 구매 테이블 ) # Right join ( 오른쪽 테이블만 존재하는 것 출력 ) -> select * from A right join B on A.userID = B.userID where B.userID is null #############################################################..
# having 절은 group by를 통해 그룹 지은 값을 대상으로 조건을 걸 수 있다. # group by로 그룹 지은 대상을 where를 가지고 조건을 사용할 수 없다. # having 절은 반드시 group by 뒤에 와야 한다. # select userID, sum(price * amount) '총 구매 액' from buyTBL group by userID; # select groupName, sum( price * amount ) from buyTBL group by groupName; -> 모든 구매 상품들 중에서 상품 분류 별로 토탈 구매액이 얼만지 알아내기 위한 쿼리이다. # group by를 사용할때 with rollup을 붙여 select하면 총 합계를 계산해서 제일 마지막 행에 덧..
# having 절은 group by를 통해 그룹 지은 값을 대상으로 조건을 걸 수 있다. # group by로 그룹 지은 대상을 where를 가지고 조건을 사용할 수 없다. # having 절은 반드시 group by 뒤에 와야 한다. # select userID, sum(price * amount) '총 구매 액' from buyTBL group by userID; # select groupName, sum( price * amount ) from buyTBL group by groupName; -> 모든 구매 상품들 중에서 상품 분류 별로 토탈 구매액이 얼만지 알아내기 위한 쿼리이다. # group by를 사용할때 with rollup을 붙여 select하면 총 합계를 계산해서 제일 마지막 행에 덧..
# show table status; -> 지정 돼 있는 데이터베이스에 테이블 목록과 함께 상성정보를 출력해 주는 쿼리이다. 테이블 생성일, 행의 개수, 인코딩 등 다양한 정보가 확인 가능하다. # 테이블에 저장 돼 있는 데이터가 많을 때 select 쿼리를 전송하면 MySQL에 부하도 증가하고 결과를 알아오는데 오랜 시간이 걸린다. # 테이블에 만들어져 있는 컬럼을 확인하기 위한 용도로 select 쿼리를 날린다면 시간이 오래 걸릴 수가 있다. # describe employees; -> 지정한 테이블에 컬럼 정보를 확인할 수 있다. 컬럼이름, 자료형, Null 유무, PK 유무 등등 # 프로젝트를 중간에 투입했을 때 다이어그램이 안 만들어져 있는 상황이 있다. (08.01) -> 이미 만들어져 있는 ..
# Limit to Hosts Matching : 계정을 생성할 때 설정하는 옵션인데, 반드시 설정해야 하고 생략할 수 없다. 이 계정으로 어느 IP에서 접속하는 것을 허용할 것인지를 지정하는 옵션이다. 보안을 위해서 계정을 만들 때 특정 IP로 제한을 함으로써 계정에 비밀번호가 유출됐을 때 피해를 최소화할 수 있는 옵션이다. 특정 IP 한개로만 제한할 수도 있고, 모든 IP에서 접속할 수 있게 허용할 수도 있고, 특정 IP대역에서만 접속할 수 있게 제한할 수도 있다. # IP대역으로 제한한다는 것은 예를들어 100.100.100.1~254 중에 어느 IP로든지 접속해도 접속을 허용하겠다라는 설정하는 것을 뜻 한다. # 제한할 IP를 %로 설정하는 것은 어느 IP에서도 접속할 수 있게 허용하겠다라는 설정..