Oct 31, 2021

Sung Hyun Hong (Jenny)·2022년 1월 24일
0

부족한 개념 정리

  1. async, await

⇒ async, await 는 비동식 코드로 불린다.

⇒ 비동기 함수를 async 함수로 만들기 위해 function 앞에 async 키워드를 추가한다. async function()은 await 키워드가 비동기 코드를 호출할 수 있게 해주는 함수이다.

async 전환법

promise 전환법

  1. .create() & .destroy() & .update()

1) .destroy() : mysql에서 sequelize 문법으로 database 를 삭제할때 다음과 같이 처리한다. destroy의 매개변수(parameter)로 where 절 조건을 전달한다.

truncate SQL 모든 것을 파괴하기 위해서는 다음과 같이 쓴다.

2) .create() : mysql에서 sequelize 문법으로 database를 생성할때 다음과 같이 처리한다. 저장되지 않은 인스턴스를 빌드하고, 그 인스턴스를 저장하기 위해 .build 와 instance.save() 가 가능하다. 이는 삽입(insert)에 해당된다.

3) .update() : mysql에서 sequelize 문법으로 database 를 업데이트할때 다음과 같이 처리한다. update의 매개변수(parameter)로 where 절 조건을 전달한다.

  1. where() 구문

: where() 옵션은 query를 필터링하는데 사용한다.

https://sequelize.org/master/manual/model-querying-basics.html#the-basics

  1. find() 구문
  • .create ⇒ insert


  • .findAll ⇒ 모든 데이터 조회조건 ⇒ select

  • .findByPk ⇒ select
  • .findOne ⇒ 조회조건 ⇒ select

  • .update ⇒ 데이터, 조회 조건 ⇒ update


  • .destroy ⇒ 삭제조건 ⇒ delete


  1. console.log(err) ⇒ try / catch 구문

자바스크립트에서 에러처리 방법을 하고자 할때, 만약 처리하지 않는다면, 스크립트의 실행을 멈춘다. 그리고 흔히 'referenceerror: fs is not defined'로 뜨게 된다.

error object에는 2가지 properties가 있다.

  • message ⇒ argument로 error에 전달한 값이다.

  • error stack trace ⇒ stack property로 접근하며, error stack은 에러를 일으킨 파일에 대한 history를 전달해 준다. 또한 stack이 메세지를 가지고 있으며, 문제가 되는 부분으로 유도하기도 한다.

  1. 권한문제 하는 방법

MySQL 접속 및 데이터 베이스 추가

mysql -u root -p

사용자 계정을 추가하기 전에 먼저 현재 생성된 사용자 계정을 확인한다.

mysql > use mysql;    // mysql database 선택mysql > select host, user, password from user;    // user 테이블 살펴보기

사용자 추가 (권한추가)mysql > create user 사용자ID;   // 사용자 추가

mysql > create user userid@localhost identified by '비밀번호';

// 사용자(user)를 추가하면서 패스워드까지 설정

기존에 사용하던 계정에 외부 접근 권한을 부여하려면, Host를 '%' 로 하여 똑같은 계정을 추가한다

mysql > create user 'userid'@'%' identified by '비밀번호';  // '%' 의 의미는 외부에서의 접근을 허용

다른 방법으로는

mysql > USE mysql;     // mysql database 선택mysql > INSERT INTO user (Host, User, Password) VALUES ('localhost', '계정아이디', password('비밀번호'));mysql > INSERT INTO user (Host, User, Password) VALUES ('%', '계정아이디', password('비밀번호'));mysql > FLUSH privileges;

mysql > drop user '사용자ID'@localhost;    // 사용자 삭제

mysql > select * from user;    // 등록된 모든 사용자 ID 조회mysql > delete from user where user = '사용자ID';      // 사용자 삭제

계정이 생성되었다면, 그 계정이 접근할 수 있는 데이터베이스를 생성하고 권한을 부여해야 한다

데이터베이스 생성

mysql > show databases;     // DB 목록 확인

mysql > create database DB명;    // 데이터베이스 생성

msyql > create schema DB명 default character set utf8; -- 둘중에 하나를 입력하면 DB 생성됨

mysql > create database DB명 default character set utf8;

// default character set을 지정하지 않으면 한글이 깨져서 나오므로 주의해야 한다.

mysql > drop database DB명;       // 데이터베이스 삭제

사용자에게 데이터베이스 사용권한 부여

MySQL은 사용자 이름, 비밀번호, 접속 호스트로 여러분을 인증한다.

MySQL은 로그인을 시도하는 위치가 어디인가 하는 것도 인증의 일부로 간주한다.

MySQL 에서 사용자 계정을 추가하고 권한을 추가하거나 제거하는 데 GRANT 와 REVOKE 명령을 사용하기를 권장한다.

사용자에게 허가된 것을 확인하려면 SHOW GRANTS 를 사용한다.

IDENTIFIED BY '비밀번호'; 는 권한부여를 하면서 비밀번호까지 변경하고자 하는 경우

이므로 비밀번호는 변경하지 않으려면 이 부분을 빼면 된다.

mysql > GRANT ALL PRIVILEGES ON DB명.테이블 TO 계정아이디@host IDENTIFIED BY '비밀번호';

// 계정이 이미 존재 하는데 'identified by '비밀번호' 부분을 추가하면 비밀번호가 변경된다

mysql> GRANT ALL privileges ON DB명. TO 계정아이디@locahost IDENTIFIED BY '비밀번호';mysql> GRANT ALL privileges ON DB명. TO 계정아이디@'%' IDENTIFIED BY '비밀번호';

mysql > grant all privileges on DB명.* to userid@'%' identified by '비밀번호' ;  //모든 원격지에서 접속 권한 추가

host에 '200.100.%' 로 하면 IP주소가 200.100.X.X 로 시작되는 모든 IP에서 원격 접속을 허용한다는 의미

host에 '200.100.100.50' 으로 하면 IP주소가 200.100.100.50 인 곳에서만 원격 접속을 허용한다는 의미

mysql > grant all privileges on test.* to userid@localhost identified by '비밀번호';

// user 에게 test 데이터베이스 모든 테이블에 대한 권한 부여

mysql> grant select, insert, update on test.* to user@localhost identified by '비밀번호';

// user 에게 test 데이터베이스 모든 테이블에 select, insert, update 권한 부여

mysql> grant select, insert, update on test.* to user@localhost;   -- 패스워드는 변경없이 권한만 부여하는 경우

// user 에게 test 데이터베이스 모든 테이블에 select, insert, update 권한 부여

mysql> grant all privileges on . to user@localhost identified by '비밀번호' with grant option;

// user 에게 모든 데이터베이스 모든 테이블에 권한 부여

// 전역 권한은 모두 광범위한 보안문제가 수반되므로 권한을 허용하는 경우 신중해야 함

mysql > flush privileges;     // 변경된 내용을 메모리에 반영(권한 적용)

사용자에게 부여된 권한 확인

mysql > SHOW GRANTS FOR test@localhost;  -- userid 와 host명까지 붙여서 검색해야 함

mysql > SHOW GRANTS FOR test@'%';

mysql > SHOW GRANTS FOR test@'200.100.100.50';

사용자에게 데이터베이스 사용권한 제거

revoke all on DB명.테이블명 from 사용자ID;     // 모든 권한을 삭제

이제 다시 show grants 로 정보를 확인해보면

user 정보는 남아 있는데, 권한부여 정보는 삭제되고 없는 것이 보인다.

사용자 계정마저 삭제하고 권한 설정 정보를 확인하려고 하면 Error 가 발생하는 걸 확인할 수 있다.

사용자 계정 삭제

mysql > drop user userid@'%';

mysql > drop user userid@localhost;

위에 있는 것과 비교해서 host 가 % 로 된 것이 삭제되었다.

출처:

https://nickjoit.tistory.com/144

  1. 참고 할 만한 reference

https://sequelize.org/master/manual/model-querying-basics.html#simple-insert-queries

https://nickjoit.tistory.com/144

https://lgphone.tistory.com/86

https://ninjaggobugi.tistory.com/18?category=979943

https://dongmin-jang.medium.com/javascript-에러-처리-방법-e6cecca61974

https://opentutorials.org/course/3347

profile
오늘 하루도 열심히!

0개의 댓글