[TIL] mysql 찝찝한 해결, migration/seed, crpyto 암호화

2019. 10. 28. 23:17TIL

오늘 한일

어제 머리 아프게 했던 mysql 문제는 결국 mysql 을 완전히 제거하고 새로 설치하는 것으로 해결이 되었다. 

아무리 계속 검색을 해보아도 권한을 재 설정 해주라는 방법들 또는 실행 중인 프로세스를 종료하라는 방법들 뿐이었고 그 방법들로는 해결이 되지않았다. 그래서 결국 제거후 재 설치를 하였다. 뭔가 좀 찝찝한 해결이 되어 버렸다. 

 

2주 프로젝트때 migration 설정을 하지않아 계속해서 db를 drop 하고 다시 만든 경우가 있어서 이번엔 migration 설정을 해주었다. 하지만db에는 migration 되었을 때 생성되는 table이 만들어 졌는데 파일은 생성이 되지 않았다. 계속 이미 만들어 졌다는 메시지만 돌아왔다.

그래서 seed설정으로 변경 값들이 있을경우 적용을 해주기로 하였다. 아래와 같이 test column을 만들어 준 뒤 적용을 시켜보았다.

module.exports = {
  up: (queryInterface, Sequelize) => {
    queryInterface.addcolumn('users', test, {
      type: Sequelize.SRTING
    })
  },

  down: (queryInterface, Sequelize) => {
    queryInterface.addcolumn('users', test)
  }
};

첫번째 시도에서는 column이 생성이 되었는데 다시 되돌리기 위해 undo를 해도 column이 삭제가 되지 않았다. 다시 새로운 column을 생성 하도록 설정한 뒤 시도를 해보았지만 실행이 되지 않았다.

 

왜 실행이 안되는지 정확한 이유를 알지 못했고 시간을 너무 허비해서 우선 보류해 두기로 하였다.

 

※Sequelize 전역에 설치하지 않았을 경우 실행 방법

    node_modules/.bin/sequelize or npx seqeulize

 

migration 참고 블로그: https://sequelize.readthedocs.io/en/latest/docs/migrations/

 

seed 참고 블로그 : Sequelize Seed – 시드 데이터 관리하기

 

회원 가입 할 때 비밀번호를 암호화 시켜주기 위해서 crypto 모듈을 사용하였다. route 함수에 바로 crpyto 모듈을 작성 하였는데 코드가 길어서 보기가 힘들었다. 모듈화를 해주면 좋겠다는 생각이 들어 따로 함수로 만들어 주었다.

function encryption(password){
  crpyto.randomBytes(64, (err, buf) => {
    crypto.pbkdf2(
      password,
      buf.toString("base64"),
      199543,
      64,
      "sha512",
      (err, key) => {
        users
          .create({
            u_email: req.body.email,
            u_name: req.body.name,
            u_password: key.toString("base64"),
          })
          .then(() => {
            response.isSignup = true;
            res.json(response);
          });
      }
    );
  });
}

'TIL' 카테고리의 다른 글

[TIL] 10.30 JWT 사용자 인증  (0) 2019.10.30
[TIL] 10.29 crpyto, user table 재설정  (0) 2019.10.30
[TIL] 10.27 mysql server open error  (0) 2019.10.27
[TIL]10.25 trello clone project start!!  (0) 2019.10.25
[TIL]10.23  (0) 2019.10.23