[AWS]리액트 개인 프로젝트 배포하기(nextjs,nestjs)[4]-mysql 설정

2021년 05월 27일 by Xion

    [AWS]리액트 개인 프로젝트 배포하기(nextjs,nestjs)[4]-mysql 설정 목차

거의 다 왔다 조금만 힘내자 !!

 

이제는 인터넷으로 접속을 할 차례이다 !

 

잘 보면, 퍼블릭 IPv4 에서 back server 인 3.37.52.147 가 있다 !

저 아이피에 내가 백단에서 쓰고 있는 포트번호(:3000)를 붙여보자 !

 

나는 : 3.37.52.147:3000 이니깐 back 서버에 접속해볼까 ?

(*여기서 3065는 본인의 프로젝트 back 서버에서 돌아가는 port 를 입력해줍니다.)

 

 


 

 

 

결과는 무한 로딩중 ... 어디가 문제지 하고 생각해봤는데

 

당연한 결과다

왜 ?

 

접속 가능한 포트는 ssh 포트랑 , 80 , 443 포트만 접속이 가능하게끔 초창기에 설정 했기 때문에 ! 

그럼 이 이슈를 또 해결해보자 

바로 우분투내의 vim 에디터로 port를 변경 !

 

먼저 port를 명시해준 코드 작성 파일로 경로를 옮겨서 편집 모드로 가자구

"vim main.ts"  입력

(이 부분도 해당 백서버단의 포트를 명시해준곳에서 바꿔주면 됩니다 ! )

node는 vim app.js 입력해주시면 됩니다 !

 

 

 

ok

main.ts 들어와졌고 저기 app.listen(3000) 이부분을 바꿔주면 되겠다 ! 

뭘로 ? 80 OR 443으로  a 눌러서 편집모드 80 수정 후 :wq 로 저장 후 탈출 !

 

 

 

 

다시 npm start !

아 ..잘 되는 척 하다가 다시 통수를 때려버리네 ;

 

그냥 mysql -uroot -p 하면 거부된다..

 

따라서 sudo로 최상위 관리자인 root로 전환해서 비밀번호를 한 번 더 바꿔버리자.

 

 

 

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ' 설정할 비밀번호 ';

설정할 비밀번호에 본인 비밀번호 입력 후 엔터 !

 

 

아..........

근데 또 여기서도 에러가난다 패스워드 정책에 관련된건데 최근에 바뀌었나보다

 

 

SHOW VARIABLES LIKE 'validate_password%' 를 입력하면 패스워드 정책을 볼 수 있다 !

 

패스워드에 관한 정책들이 보인다.

제일 위의 validate_password_check_user_name은 패스워드에 user id가 들어갔는지 묻는것이다.

필자의 경우 아이디와 패스워드가 모두 root인데 만약 on이 켜져있다면 이는 불가능하다.

length는 당연히 길이를 의미한다. 8자 이상이어야 한다는 이야기이다.

mixed case count는 대소문자를 적어도 1회이상은 써야한다는 것이다.

밑의 nuber count도 숫자를 적어도 1회 이상은 써야한다는 것이다.

마지막의 special char count는 특수문자를 적어도 1회 이상은 써야한다는 것이다.

 

 

 

여기서 policy정책이 STRONG으로 되어있다.

STRONG 은 위의 정책들이 활성화 되어있음을 의미한다.

만약 위 정책을 끄고싶다면 이 파라메터가 low가 되어있어야한다.

단 low로 해도 자릿수는 지켜야한다. 즉 8자리 이상으로 해야한다는 의미.

여기서 정책을 변경하는 명령어는 아래와 같다.

 

SET GLOBAL validate_password.policy=LOW; <- MEDIUM 으로 변경도 가능 ( 이 명령어가 안된다면 " . " 을 " _ " 로 바꿔보자)

 

자 일단 성공

 

위의 방법으로 패스워드 정책을 변경가능하다.

만약 길이 까지 바꾸고싶다면 위를 비슷하게 응용하면 된다.

 

SET GLOBAL validate.password.length = <원하는 길이>;

 

이제 테스트를 해보자. 테스트는 위의 예시처럼 password 함수를 쓰면된다.

 

select password('<테스트할 패스워드>');

 

 

하지만 위 변경방법은 임시방편이라고 할 수있다.

꺼져도 유지가 되긴하는데 문제는 서비스를 재시작하면 위 조건이 꺼진다는 것이다.

물론 비밀번호는 강하면 좋기에 켜놓으면 좋지만 테스트를 계속해서 하는 와중이라면 이는 귀찮은 작업이다.

다시 말하지만 릴리즈 할거라면옵션을 켜놓고 잠시켜놓고 쓰는게 바람직하다.

그러나 테스트를 할거라면 서비스가 재시작되도 설정이 유지되게 설정파일을 바꿔주는게 낫다.

(저는 안 바꿨어요 정책만 바꾸고 )

성공!

 

 

 

아.. 또 끝날것같았지만 끝나지 않았는데 ...

이와 같은 오류가 뜬다 이번엔 뭐 using password : YES 이러면서..

Access denied for user 'root'@'localhost'

 

찾아보니

 

우분투내의 mysql 계정은 다음과 같다.

 기본적으로 초기설정되어있는 mysql의 root 계정의 패스워드 타입때문인데 이 타입을 변경해주면된다.

보통 root의 plugin이 auth_socket으로 설정되어있는것을 확인할 수 있다.

이 값을 mysql_native_password로 변경해주면 일반적인 로그인이 가능하다.

 

 

여기서 내가 삽질한 점은

우분투 내의 .env.production 파일이 있는데 그 파일내에서 DB_PASSWORD랑

우분투내의 mysql root 계정 패스워드랑 달라서 계속 USING PASSWORD 이런 오류가 나왔다 

해당 비밀번호를 일치 시켜주니까 정상적으로 실행이 됐다 !!

 

sudo npm run start:prod !

 

얼마나 까르꼬름하냐 이 순간만 기다려왔어 ..

 

 


 | mysql 우분투 설정파일 바꾸는 방법 

my.cnf(my.ini)에 들어가서 아래처럼 validate_opassword_policy를 LOW로 수정하자.

만약 없다면 그냥 만들어서 LOW로 지정하면 됩니다 !.

 

 

[client]

default-character-set=utf8

 

[mysqld]

character-set-server=utf8

basedir=C:\\tools\\mysql\\current

datadir=C:\\ProgramData\\MySQL\\data

 

##password Policy

validate_password_policy=LOW

validate_password_length=4

 

이제는 서비스의 재시작 여부와 상관없이 무조건 적용되는걸 확인할 수 있다.