분류 전체보기 50

[MySQL] Access denied for user 'root'@'localhost' 비밀번호 변경x

Mysql 연동하려는데 Access denied for user 'root'@'localhost' (using password: YES) 가 뜬다. 아니 잘 되던 애가 갑자기 왜.. 침착하게 mysql을 다시 시작해본다. 안된다. 이걸로 구글링하면 항상 반겨주는 것 : using password : YES이면 비밀번호가 틀린 것이므로 비밀번호 재설정 및 권한 주기 응 안된다. 애초에 잘 쓰던 애다. 다시 구글링해본다. 어 혹시 mysql을 버전 다르게 두 번 깔았나..? 확인해본다. 아니다. 내가 뭘 잘못했는가 자아성찰의 시간을 가져본다. 소용 없다. 다시 구글링해본다. https://kimtaehyun98.tistory.com/125 Access denied for user 'root'@'localho..

삽질 2022.07.20

TCP와 UDP

* 프로토콜 : 서로 다른 기기 간 데이터 교환을 원활하게 하기 위한 통신 규약 * 패킷 : 네트워크를 통해 전송하기 쉽도록 자른 데이터 단위 TCP와 UCP TCP와 UDP 공통점 네트워크 계층 중 전송계층에서 사용하는 프로토콜이다. header에 데이터 오류 검사를 위한 체크섬(Checksum) 필드가 있다. TCP와 UDP 차이점 TCP (Transmission Control Protocol) UDP (User Datagram Protocol) 연결 방식 연결형 서비스 비연결형 서비스 패킷 교환 방식 가상 회선 방식 데이터그램 방식 통신 방식 1:1 1:1 / 1:N / N:N 흐름 제어, 혼잡 제어 흐름 제어o, 혼잡 제어o 흐름 제어x, 혼잡 제어x 신뢰성 UDP에 비해 높음 TCP에 비해 낮음..

네트워크 2022.07.14

[Docker] 볼륨, 바인드 마운트, tmpfs 마운트

도커 컨테이너 내부에 저장된 데이터는 컨테이너 삭제 시 함께 삭제된다. 도커에서 컨테이너의 생명주기와 관계 없이 데이터를 영속적으로 저장할 수 있는 방법으로는 볼륨과 바인드 마운트가 있다. 더불어 영구저장은 아니지만 tmpfs 마운트도 있는데, 이 3가지를 살펴보고자 한다. 이 3가지 방법의 가장 큰 차이점은 데이터가 어디에 저장되는가 이다. 볼륨(volume) 볼륨을 생성하면 도커 host의 디렉터리 내에서 도커가 관리하는 영역에 저장 된다. (리눅스의 경우 /var/lib/docker/volumes/[volume명]) 볼륨을 컨테이너에 마운트하면 이 디렉터리가 컨테이너에 마운트되는 것 도커에 의해 관리된다. 볼륨을 마운트 할 때 볼륨 이름을 명시하거나 명시하지 않을 수 있는데, 이름을 명시하지 않은 ..

DevOps 2022.07.06

yml 파일 여러 개 등록

프로젝트에 yml파일을 아래와 같이 생성해두었다. application.yml application-oauth.yml application-jwt.yml 그런데 application-oauth.yml는 잘 읽고 application-jwt-yml을 읽지를 못하는 상황이라서, 임시적으로 jwt 관련 정보를 application.yml에서 관리하고 있었다. 그래도 되도록이면 로그인 관련 정보는 하나의 yml에서 관리하는 것이 좋다고 생각하여 jwt 관련 정보를 application-oauth.yml로 옮기고, 파일 명을 application-login.yml로 변경하였다. 그런데 jwt 정보를 못 읽는 상황이 발생. 그리고 그 외의 것들도 못 읽고 nested exception is java.lang.Ill..

프로젝트/3 2022.07.02

인증 성공 시 메서드 호출 위치 변경

회원이 로그인 했을 때 아래의 3가지 기능이 처리되어야 한다. 알람 목록(addToNotifyList) 마지막 방문일 업데이트(modifyLastDate) 방문 횟수 업데이트(modifyVisit) 그런데 addToNotifyList와 modifyLastDate가 userDetailsService 구현체인 CustomMemberDetailsService의 loadUserByUsername 메서드 안에서 호출되고 있었다. 즉 DB에서 회원 ID가 조회되면 바로 알람목록과 방문일이 업데이트 되는 것이다. 그런데 알람목록과 방문일의 업데이트 기준은 '로그인 성공' 즉, 인증이 완료된 이후여야 하는 것이 맞지 않나? 라는 생각이 들어서 두 메서드를 SecurityConfig내 successHandler로 이동시..

프로젝트/2 2022.06.27

파일

1. 업로드 경로 변경 파일을 로컬컴퓨터가 아닌 AWS ECS에 올린 Docker에 upload라는 폴더로 업로드하도록 변경하고자 하였다. 기존 로컬컴퓨터 경로로 지정되어 있던걸 upload로 변경하고, upload 폴더가 없으면 폴더를 만드는 메서드를 추가하였다. * 게시글 목록 조회 시 썸네일에 노출시킬 이미지는 게시글에 등록된 이미지의 사이즈를 줄여서 별도의 폴더에 저장하고 있었다. 처음에는 이미지 리사이징이 왜 필요한지 의문이었고, 리사이징해서 별도로 저장하면 용량만 더 차지하는 것이 아닌가 싶었다. 근데 지금 생각해보면 게시글 목록 조회 시 이미지 용량이 큰 것보다는 리사이징해서 줄여놓은 이미지를 불러오는 게 부담이 덜 가기 때문에 리사이징이 필요한 게 아니었을까 생각 중 1-1. 확인 일단 잘..

프로젝트/2 2022.06.25

CSRF란?

CSRF(Cross-Site Reqeust Forgery) 사이트 간 요청 위조 사용자의 의지와 무관하게, 사용자의 요청에 공격자가 의도한 행위를 담아 특정 웹사이트에 요청하도록 위조하는 것 CSRF 공격 CSRF 공격이 가능한 조건 사용자가 이미 인증된 상태일 것 인증된 사용자가 가진 권한의 범위에서 악의적인 행위를 할 수 있다. 쿠키를 기반으로 한 세션 인증을 사용하는 환경일 것 사용자가 사이트에 요청을 보내면 브라우저가 갖고 있는 쿠키는 서버에 자동으로 전달되기 때문이다. 공격자는 서버를 공격을 위한 요청방법을 미리 파악하고 있을 것(예측 불가한 파라미터가 없을 것) CSRF 공격 과정 사용자가 로그인(인증) sessionID가 사용자 브라우저의 쿠키에 저장 됨 사용자가 악성 스크립트 페이지를 누르..

기타 2022.06.21

[CI/CD] Jenkins - Github accessToken 만료 시 Jenkins 재연동

깃허브 Webhooks로 jenkins 연동해놓았었는데 라고 메일이 왔다. 내 웹훅.. 괜히 궁금해서 jenkins가서 build now 해보았는데 역시 실패! Console Output 가보니 ... returned status code 128 gitlab ... ... stderr: remote: Invalid username or password. ... 라고 함. 1. 액세스 토큰 재발급 메일에 있던 링크에 들어가면 바로 액세스 토큰을 재발급 받을 수 있다. 재발급 받은 액세스토큰 값은 보관해둬야 한다. 경고문에 나와 있듯이 이때 아니면 볼 수 없기 때문. 혹시 액세스토큰 관련 설정하려면 github > 우측 상단 프로필 아이콘 > Settings > 좌측 가장 하단 Developer settin..

DevOps 2022.06.17

댓글

기존에 만들었던 프로젝트에서 수정이 필요한 부분이 있었다. 이전에 저장했던 DDL과 깃을 가져와 별도의 repository를 만들어서 리팩토링을 하는 중. 내가 작성한 코드가 아니라서 코드를 기록하지는 못함. 문제상황1 댓글 작성 후 화면 새로고침 시 댓글이 2개씩 달렸다. 문제상황1 해결 html에 가보니 동일한 코드가 있었고 이를 삭제해주어 해결하였다. 문제상황2 DDL을 기록했을 때의 DB구조와 프로젝트 완료 후 DB구조가 상이하여 답댓글 저장이 안 되었다. 문제상황3 댓글 삭제 시 '삭제된 댓글입니다'가 표시되지 않았다. 문제상황2, 3 해결 답댓글 저장 및 삭제된 댓글 구분을 위해 grp(댓글 그룹), seq(댓글 그룹 내 순서), depth(댓글과 답댓글 구분), hide(삭제 여부 체크) 컬..

프로젝트/2 2022.06.16