분류 전체보기 1185

[MySQL] ERROR 2068 (HY000) : LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.

리눅스에서 mysql-client를 사용해 LOAD DATA LOCAL INFILE 문을 실행했더니, 아래와 같은 에러가 발생하면서 정상 동작하지 않았다. 실행한 명령어 mysql -u -p -P -h < /path/use.sql 에러 메세지 ERROR 2068 (HY000) at line 2: LOAD DATA LOCAL INFILE file request rejected due to restrictions on access. 공식 문서를 확인해보니 LOAD DATA LOCAL에 잠재적인 보안 문제가 있어 서버와 클라이언트 측에 보안 요구사항이 존재하며, 관련하여 MySQL 서버와 클라이언트 양측에서 local-infile을 활성화하지 않은 게 원인이었다. 관련하여 확인하고 조치해본다. 참고로 버전은 ..

Database 2022.04.06

[Git] 로컬 브랜치와 다른 원격 브랜치로 Push하기

다른 branch에 반영해야 하는 수정사항을 master 브랜치에서 작업해버렸다. 저장소 관리 정책 상 master 브랜치에는 직접 push 할 수가 없어 곤란한 상황에서는 어떻게 해결하면 좋을까? 작업해야 하는 branch로 이동해서 다 다시 수정해야 할까? 기본적으로 로컬 저장소와 원격 저장소의 브랜치 이름이 같으면 아래와 같은 명령어로 push할 수 있다. git push # 예시 git push origin master 하지만 push 명령은 push할 브랜치와 업데이트할 브랜치를 지정할 수도 있다. git push : # 예시 git push origin master:passwd src는 push할 브랜치의 이름이다. SHA-1 식도 지정할 수 있는 것을 보면, 특정 커밋만을 push할 수도 있..

Git | GitLab 2022.04.05

[Redmine on AWS] S3 Bucket 생성 및 Redmine S3 플러그인 설치

지난 2022.04.02 - [Redmine on AWS] NLB 생성 글까지 진행해서 문제가 없다면, Redmine이 동작하는 것을 확인할 수 있다. S3는 AWS 스토리지 서비스로 모든 종류의 데이터를 저장할 수 있는 key 기반의 객체 스토리지이다. 이번 글에서는 Redmine에 업로드한 파일을 저장하기 위한 S3 Bucket을 생성하고, Redmine S3 플러그인을 설치하고자 한다. 참고로 공식 플러그인은 아니다. Redmine에 업로드한 파일은 기본적으로 Redmine이 동작하는 WAS 인스턴스 내에 저장된다. 하나의 WAS 인스턴스가 동작한다면 별다른 문제가 없겠지만, 이 글에서는 로드 밸런서가 2개 이상의 WAS 인스턴스에 트래픽을 분산시키면서 동작하기 때문에 모든 WAS가 동일하게 파일에..

[BOJ] 1100 - 하얀 칸

문제 https://www.acmicpc.net/problem/1100 8 * 8 크기의 검정 칸과 하얀 칸이 번갈아가며 칠해진 체스판이 있다. 가장 왼쪽 위칸 (0, 0)이 하얀 칸이라고 할 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램을 작성하라. 말이 없는 칸은 "."로 표기하고, 말이 있는 칸은 "F"로 표기한다. .F.F...F F...F.F. ...F.F.F F.F...F. .F...F.. F...F.F. .F.F.F.F ..FF..F. 풀이 내 풀이 1. 체스판의 상태를 문자열 배열로 입력받는다. 2. 체스판을 탐색하며, 하얀 칸이면서(행과 열이 짝수이거나 행과 열이 홀수) 말이 있을 때 말의 개수를 1씩 증가시킨다. 3. 최종 확인된 말의 개수를 출력한다. 코드 import sy..

Algorithm/백준 2022.04.03

[Redmine on AWS] NLB 생성

웹 서버에서 WAS로 트래픽을 라우팅 할 수 있도록 NLB를 생성하려고 한다. NLB는 3000 포트로 트래픽을 수신받아 WAS의 3000 포트로 라우팅 하도록 하려고 한다. 생성 방법 1. EC2 서비스의 왼쪽 메뉴바에서 로드 밸런서를 클릭한다. 2. 로드 밸런서 생성 버튼을 클릭한다. 3. Network Load Balancer를 선택한다. 4. NLB 생성을 위한 구성 정보를 설정한다 4-1) 기본 구성 VPC 내부에서 동작하기 때문에 내부 체계를 선택한다. 4-2) 네트워크 NLB가 위치할 VPC, AZ, 서브넷을 선택한다. 4-3) 리스너 및 라우팅 TCP 3000포트로 수신받은 트래픽을 대상 그룹으로 전달하도록 한다. 필요시 대상 그룹을 생성한다. ALB 대상 그룹과 동일하게 인스턴스 유형을 ..

[Grafana] 일반 사용자 추가 및 권한 설정

Grafana는 사용자 관리를 위한 여러 기능을 제공한다. 당연히 사용자를 관리하기 위해서는 일단 사용자를 추가해야 할 것이다. 이 글에서는 Grafana에서 일반 사용자를 추가하고 권한을 설정하는 방법에 대해 정리한다. 사용자 추가 1. admin 계정으로 Grafana에 접속한다. 2. 왼쪽 메뉴에서 Server Admin > User로 접근한다. 3. New User 버튼을 클릭하여 사용자 생성 페이지로 이동한다. 4. 계정 정보를 작성하고 Create user 버튼을 클릭한다. 이후 user 목록에 생성한 사용자가 존재하는지 확인한다. Name 항목이 필수 값인 걸 보면 해당 값이 ID인 것으로 보인다. 권한 설정 Grafana에서 사용자는 Admin, Editer, Viewer 권한을 가질 수 ..

Grafana 2022.04.01

[Docker] 이미지 용량 확인

서버에 저장된 Docker 이미지 용량을 확인하고자 한다. Docker의 디스크 사용량은 기본적으로 docker system df 명령으로 확인할 수 있다. docker system df docker system df # -v : --verbose. 공간 사용에 대한 상세 정보 표시 서버에 저장된 이미지는 총 15개이며, 그 용량의 합은 2.061GB 인 것을 확인할 수 있다. 이미지 각각에 대한 용량 정보도 확인할 필요가 있다면, 상세 정보를 표시하는 -v, --verbose 옵션 사용하면 된다. docker system df -v SHARED SIZE 행은 이미지가 다른 이미지와 공유하는, 즉 공통 데이터에 해당하는 공간의 용량이다. UNIQUE SIZE는 해당 이미지에서만 사용하는 공간의 용량이다...

Docker 2022.03.31

[Redmine on AWS] WAS

이번 글에서는 WAS를 생성할 것이다. WAS의 OS도 Ubuntu 18.04 LTS이며, Redmine과 Redmine을 실행할 Phusion Passenger 설치가 필요하다. EC2 인스턴스를 생성하는 것 자체는 2022.02.24 - [Redmine on AWS] Bastion Host 생성과 동일하므로 이 글에서는 생략한다. 생성이 완료되었다면, 보안 그룹에 아웃바운드 규칙을 추가한다. 대상은 MySQL에 적용된 SG로 하고, 포트는 3306으로 설정한다. Redmine은 Ruby를 사용할 수 있는 대부분의 OS 환경에서 사용할 수 있다. 조금 더 정확하게는 Ruby on Rails 프레임워크로 구축된 웹 애플리케이션이다. 그리고 Phusion Passenger는 Ruby on Rails 프레임..

[Get-Content] 리눅스 tail -f 명령 대체

리눅스의 tail -f와 동일하게 동작하는 윈도우 명령어를 정리해둔다. Get-Content 경로로 지정한 파일의 텍스트나 함수의 내용과 같은 항목의 내용을 가져온다. 파일의 경우 한줄씩 읽는다. 공식 문서에 사용 예시도 몇 가지 존재한다. 명령어 Get-Content # -Wait : 기존 행 출력 후 파일을 연 상태를 유지한다. 대기하는 동안 1초에 한 번 씩 파일을 확인하고 새 줄이 있으면 출력한다. # -Tail : 마지막 N개 줄을 가져온다. 필터링, 출력 줄 수 지정, 구분자 지정 등의 다른 옵션이 존재한다. 예시 tail -f와 동일하게 동작하기 위해선 -Wait 옵션과 -Tail 옵션 사용이 필요하다. Get-Content .\logs\nifi-app.log -Wait -Tail 10

Windows 2022.03.29

[cp] 파일/디렉터리 권한 유지

cp를 이용해 파일을 복사 시 기존 파일의 소유자나 권한 그대로 유지되지 않을 수 있다. 복사를 수행한 사용자의 umask 설정에 따르기 때문이다. 파일의 소유자와 권한을 유지하여 파일을 복사하기 위해서는 -p 옵션을 사용해야 한다. 명령어 cp -p # -p : --preserve=mode,ownership,timestamps와 동일. # --preserve : 지정된 속성을 유지하여 파일을 복사한다. 기본값은 mode,ownership,timestamps이다. context, links, xattr, all 속성이 지정될 수 있다. 확인 -p 옵션 없이 파일 복사한 경우 복사된 cp-test 파일의 소유자와 권한이 원본 파일과 달라진 것을 확인할 수 있다. -p 옵션 사용하여 파일 복사한 경우 복사된..

Linux 2022.03.28