배포 후 실행하는데 이런 에러가 나타났다.
서버에서 EC2랑 RDS 연결을 안해줘서 나타난 문제였던거였다.
prisma:error
Invalid `prisma.users.findFirst()` invocation:
Can't reach database server at `express-database.~~~~.rds.amazonaws.com:3306`
1. RDS와 EC2 연결
1) EC2 인스턴스의 보안그룹 규칙 편집
MySQL에서 사용하는 포트는 3306번이기 때문에, IPv6과 IPv4에서 모든 접근을 허용하도록 변경한다.
2) RDS '연결된 컴퓨팅 리소스' 에서 해당 EC2 인스턴스 추가
이렇게 하면, EC2와 RDS는 연결이 완료되었다.
2. 원격으로 MySQL 설치
1) 설치
인스턴스에는 MySQL이 없기 때문에, 원격으로 설치해줘야 한다.
먼저, 터미널창에서 EC2에 접속한다.
ssh -i (받은 키페어 이름).pem ubuntu@(AWS에 적힌 ip주소)
git clone, .env생성까지 모두 완료했다고 치고..
apt를 업데이트 한 뒤 mysql-server를 다운로드 한다. 다운로드 중간에 'After this operation, 156 MB of additional disk space will be used.' 라고 뜰텐데, 일단 Y를 눌러 계속 진행시키자.
sudo apt update
sudo apt install mysql-server
mysql이 제대로 설치됐는지 확인.
mysql --version
2) mysql 접속 및 계정 설정
여기서 관리자 권한으로 mysql에 접속해야 접속이 가능하다. sudo 명령어를 사용하자.
root라는 계정으로 접속한다. 이 때 비밀번호는 설정되어있지 않아서, 별다른 입력 없이 엔터를 치면 된다.
sudo mysql -u root -p
mysql이라는 이름의 데이터베이스를 사용한다.
use mysql
root 계정의 비밀번호를 설정한다. 그냥 0000으로 해줬다.
alter user 'root'@'localhost' identified with mysql_native_password by '0000';
변경사항 저장 및 종료
FLUSH PRIVILEGES;
exit
3) 외부 접속 허용
외부 접속을 허용하려면 mysqld.cnf 파일에서 ip주소를 변경해줘야 한다.
관리자 권한으로 해당 파일이 있는 디렉토리로 이동하여 파일을 실행한다.
sudo su
cd /etc/mysql/mysql.conf.d
vi mysqld.cnf
i를 입력한 뒤 아래방향 화살표를 눌러서 스크롤을 내리면 bind-addrss = ...가 나올텐데, 여기를 0.0.0.0으로 수정한다.
수정 완료 후 esc 입력 > :wq! 입력해서 저장 및 종료
mysql 서버를 다시 시작한다. 비밀번호는 아까 설정한 비밀번호를 입력한다.
service mysql restart
mysql -u root -p
root를 계속 사용하는것은 부적절하기 때문에, 다른 이름으로 유저를 만들어 권한을 준다.
CREATE USER '(유저이름)'@'%' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON *.* TO (유저이름)@'%';
끝..
'TIL' 카테고리의 다른 글
TIL 240530 - JWT 사용의 2가지 방법, Header와 Cookie (0) | 2024.05.30 |
---|---|
TIL 240529 - 알고리즘 코드카타 리뷰 - 대충 만든 자판 (1) | 2024.05.29 |
TIL 240527 - 미들웨어 함수에 인자를 추가로 받도록 설정 (1) | 2024.05.27 |
TIL 240524 - prisma relation을 이용한 findMany 메서드 에러 해결 (1) | 2024.05.24 |
TIL 240523 | 알고리즘 코드카타 리뷰 - 옹알이(2) (0) | 2024.05.23 |