Database 16

[postgreSQL] postgreSQL에서의 인젝션 공격 예방

postgresql 쿼리 구성에 따라 SQL 인젝션 공격을 예방할 수 있는데, 현재는 파라미터화된 쿼리를 사용하고 있다. 파라미터 전달 방식SQL 쿼리와 데이터 값을 분리하여 처리데이터 값은 쿼리의 일부로 직접 포함되지 않고, 별도의 파라미터로 전달됨데이터베이스 드라이버가 파라미터를 안전하게 처리하여 SQL 인젝션 공격을 방지함파라미터화된 쿼리: 예를 들어, 다음과 같은 파라미터화된 쿼리는 안전하다.const query = 'SELECT * FROM users WHERE username = $1 AND password = $2'; const values = [username, password]; const result = await client.query(query, values); 일반 문자열 조합 직..

Database/postgreSQL 2024.09.26

트랜잭션 격리 수준

트랜잭션 수준(transaction level) 데이터베이스 관리 시스템에서 트랜잭션의 상태와 처리 과정을 관리하는 방식을 의미한다. 트랜잭션은 일련의 작업으로, 원자성(atomicity), 일관성(consistency), 고립성(isolation), 지속성(durability)의 ACID 속성을 만족해야 한다.원자성(Atomicity): 트랜잭션 내의 모든 작업이 성공적으로 완료되거나, 실패할 경우 아무 작업도 수행되지 않은 것처럼 처리일관성(Consistency): 트랜잭션이 완료되면 데이터베이스는 일관된 상태여야 하고 모든 제약 조건이 충족되어야 함고립성(Isolation): 여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션은 독립적으로 실행되어야 하고, 서로의 작업에 영향을 미치지 않아야 함지속성(..

Database/study 2024.09.22

[database] 파일 시스템/데이터베이스 모델링/관계형 데이터베이스별 표현 용어 정리, 컬럼과 필드의 차이점

목차 -컬럼과 필드의 차이점 -파일 시스템/데이터베이스 모델링/관계형 데이터베이스별 표현 용어 정리 [컬럼과 필드의 차이점] 컬럼(Column): 관계형 데이터베이스 테이블에서 특정한 단순 자료형의 일련의 데이터 값을 의미함. 쉽게 말하면, 테이블의 수직 방향으로 나열된 데이터들을 컬럼이라고 한다. 필드(Field): 데이터베이스 시스템에서 어떠한 의미를 지니는 정보의 한 조각을 의미함. 테이블의 컬럼을 포함하여, 데이터베이스 레코드를 구성하는 모든 요소를 통칭하는 용어이다. 구분 컬럼 필드 정의 테이블의 수직 방향 데이터 데이터베이스 정보 조각 범위 컬럼은 필드의 한 유형 필드는 컬럼을 포함한 모든 요소 데이터 유형 단순 자료형 (숫자 ,문자열) 다양한 자료형 (컬럼 ,관계 ,이미지) 역할 데이터 저장..

Database/study 2024.04.10

[mysql] MYSQL 계정 설정

서버 실행 mysql.server start root 계정으로 접근 mysql -u root -p mysql 사용중인 계정 확인 mysql> use mysql; mysql> select host, user from user; 계정 생성 CREATE USER '계정명'@'호스트' IDENTIFIED BY '비밀번호'; '계정명' : 원하는 사용자 이름 '호스트' : 허용 접근 호스트 (localhost, %, IP주소 등) '비밀번호' : 사용자 비밀번호 ex) CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password1234'; 호스트) localhost: 내부 IP에서만 접근 가능 %: 외부 및 내부 IP 모두 접근 가능, %는 모든 호스트를 의미함. 계정..

Database/mysql 2024.03.07

[mysql] 프로그래머스 SQL 문제 풀기

-limit 1 : 최상위 데이터 1개 가져오기 -- 코드를 입력하세요 SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME limit 1; -AS : DATETIME을 조회하되 '시간'으로 셀렉하기 -- 코드를 입력하세요 SELECT DATETIME AS '시간' FROM ANIMAL_INS WHERE NAME = 'Jack'; -DISTINCT : 중복값 제거 -IS NOT NULL : 값이 NULL이 아닌것만 SELECT COUNT(DISTINCT NAME) AS NonNullNameCount FROM ANIMAL_INS WHERE NAME IS NOT NULL; -GROUP BY NAME : NAME 컬럼 기준으로 그룹화 -- 코드를 입력하세요 SELECT NAME,C..

Database/mysql 2023.12.16

[database] 시퀀스, MYSQL

시퀀스는 데이터베이스 객체로, 자동으로 순차적으로 증가하는 순번을 반환한다. 주로 PK값에 중복값을 방지하기 위해 사용되는데 예를 들어 게시판에 글이 하나 추가 될때마다 글번호가 생성되어야 하는경우에 사용된다. 고유성 보장되고 데이터 추적 및 성능 향상에 도움이 된다. 문제는 시퀀스는 Oracle db에서 사용되는 문법이라 다른 RDBMS에서는 문법이나 사용 방법이 다르다. MYSQL의 AUTO_INCREMENT 속성과 동일한데, MYSQL은 AUTO_INCREMENT 속성을 사용해 고유 한 ID를 생성한다. 다만 MYSQL에서 AUTO_INCREMENT속성은 PRIMARY KEY에만 적용시킬 수 있고, 다른 컬럼에 적용이 불가능함. 유일한 식별자를 생성하는데 사용되기때문에, 한 테이블에서 하나의 컬럼에..

Database/mysql 2023.11.26

[database] 데이터 설계시 고려해야 할 사항

데이터베이스 설계는 데이터를 구조화,조직화하고 효율적으로 저장, 검색, 관리하기 위해 체계적으로 계획하는 것을 말한다. 또한 데이터베이스 시스템의 성능, 효율성, 유지보수 용이성 등을 고려해 데이터 모델을 정의하고 스키마를 설계하는 것을 포함한다. 데이터 설계시 고려해야 할 사항은 다음과 같다. 무결성 https://vc-xz.tistory.com/296 요구사항 분석 애플리케이션에서 필요로 하는 데이터를 정의하고 수집 사용자의 요구사항을 파악하여 데이터베이스가 제공해야 하는 기능과 성능 이해 데이터 모델링 개념적 데이터 모델을 만들어 업무 프로세스와 데이터 간의 관계를 이해하고 문서화. 논리적 데이터 모델을 작성하여 개념적 모델을 데이터베이스 시스템이 이해할 수 있는 형태로 변환함 보안 및 권한 관리 ..

Database/study 2023.11.12

[database] 데이터베이스 무결성

데이터 무결성은 데이터가 정확하고 일관성 있게 유효성이 유지되는 상태를 의미한다. 여기서 정확성이란 중복이나 누락이 없는 상태를 뜻한다. 데이터의 무결성을 유지하는 것은 DBMS의 중요한 기능이다. 데이터 무결성은 다음과 같은 측면에서 검토된다. 개체 무결성- 기본키의 제약, 각 행은 고유한 식별자를 가져야 하고, 중복된 데이터가 입력되지 않도록 보장해야 한다. (NULL값이 올 수 없음, 기본키는 오직 하나의 값만 존재해야함, 빈값은 허용하지 않음) 참조 무결성- 외래키 제약, 여러 테이블간의 관계에서 나타내는데 외래키는 다른 테이블의 기본키를 참조하고 이 관계는 정확하고 일관성있게 유지되어야 한다. -> 외래키 값은 참조하는 테이블의 기본키 값과 일치해야 함. 도메인 무결성- 올바른 데이터가 입력되었..

Database/study 2023.11.11

[mysql] DB 연결 오류: Error: connect ECONNREFUSED ::1:3306

로컬로 db 연결하는데 잘 입력했는데 자꾸 연결이 안됨 DB_HOST=localhost로 설정한걸 127.0.01로 바꾸니까 잘 작동됨 "localhost": "localhost"는 대개 시스템의 호스트 파일 (hosts file)에 정의된 루프백 주소를 나타냄. 이 주소는 IPv4와 IPv6 모두를 지원하며, 운영 체제가 IPv6 지원을 활성화한 경우에는 IPv6 주소로 해석될 수도 있음 "127.0.0.1": "127.0.0.1"은 IPv4 루프백 주소로 IPv4 통신에 사용됨 문제의 경우, MySQL 서버가 IPv6를 지원하지 않거나, MySQL 설정이 IPv6 주소 "::1"에 대한 연결을 허용하지 않는 경우에는 "localhost"를 사용하면 연결 문제가 발생할 수 있다. 다만 "127.0.0...

Database/mysql 2023.10.23