TIL - Spring 프로젝트 생성 + MySQL 연결 오류 / Git Commit 오류

su·2024년 4월 2일
0

TIL

목록 보기
83/93
post-thumbnail

MySQL 연결 오류

1. 문제

spring 환경을 gradle에 다 추가하고 build 후
application을 실행했더니 보기좋게 오류가 났다.
알고보니 mysql 설정을 아무것도 해주지 않고 돌려버려서 오류가 났던 것..
다급하게 설정을 시작했다.

2. 시도

일단, 맥으로 환경을 바꾼 후 처음 설정하는 거라 터미널에 mysql부터 설치 !

// 최신으로 업데이트
brew update

// mysql 설치하기
brew install mysql

// mysql 설치 버전 확인하기
mysql --version

// mysql 서버 시작하기 
mysql.server start

// mysql 접속하기
mysql -u root -p

// 비밀번호 설정은 없음으로
enter 키

다음으로는 데이터베이스를 생성해주어야 한다.

// 데이터베이스 생성하기
create database [DB명]

// 계정 생성 전 설정하기
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

// 계정 생성하기
create user '[계정명]'@'localhost' identified by '[계정명]';
GRANT ALL PRIVILEGES ON *.* TO '[계정명]'@'localhost';
FLUSH PRIVILEGES ;

// 계정 생성 후 미리 설정한 root 권한 제거
drop user 'root'@'%';

사실 잘 모르겠어서 나오는 대로 쭉 따라해봤다.
그랬더니 'application.properties' 파일 설정 후 실행할 때 또 오류가 ..
생각해보니, 계정 설정을 할 때 계정 이름, 비밀번호도 안주고 그냥 .. 해버렸다..
아무래도 그것 때문에 오류가 발생했던 것 같아서, 사용자 정보를 다시 설정 해주기로 했다.

3. 해결

3-1. MySQL 서버 중지 후 재시작

일단 mysql 서버를 중지해주자 !

// mysql 서버 중지하기
mysql.server stop

이렇게 하면, Shutting down mysql 후에, SUCCESS가 뜬다.

그 다음, 서버를 재시작 해준다.

// mysql 서버 재시작 하기
mysql.server start --skip-grant-tables

--skip-grant-tables를 통해서 MySQL 서버에 root 인증 없이 접근할 수 있게 해준다고 한다.

3-2. 계정 접근 후 권한 설정

root 계정에 접근해서 비밀번호를 변경한다.

// root 계정에 접근하기
mysql -u root

// mysql root 계정 접근 권한 설정하기
update mysql.user set authentication_string=null where user='root';

// 변경된 권한 설정하기
flush privileges;

먼저 root 계정에 접근을 해서 mysql에 들어간다.
alter user를 이용해 비밀번호를 변경할 수 있는데,
skip-grant-tables 옵션으로는 alter user 문이 실행되지 않기 때문에 임시로 일단 비밀번호를 null로 바꾸어준다.

그 다음, flush privileges 를 통해 변경된 권한을 설정해준다.

그리고 서버를 빠져나간다. exit !

3-3. MySQL 재시작 후 비밀번호 변경

// mysql 서버 재시작하기
mysql.server restart;

// mysql root 계정 접속하기
mysql -u root

// root 계정 비밀번호 변경하기
alter user 'root'@'localhost' identified with caching_sha2_password by '변경할 비밀번호';

3.4 비밀번호 변경 확인

// mysql 접속하기
mysql -u root -p

MySQL 서버로 들어간다.
변경한 비밀번호를 입력하면 ? 성공이다 !!

4. 배운 점

MySQL을 로컬에 다운로드 받고, 접속해서 비밀번호를 입력한다.
MySQL 서버에 접속하고 나면, 데이터 베이스를 생성한다.
계정 생성 전에 설정을 하고, 계정을 생성한다.
설정한 내용을 application.properties 파일에 잘 적어주면 실행 완료 !

Git Commit 오류

1. 문제

겨우겨우 MySQL 문제 해결을 해놓고 ..
이제 설정이 다 됐구나 싶어서 git에 commit 하려고 보니 ..
오류가 났다 ! ^^ 왜 또 .. 뭘 잘못했니 내가 ..

You are about to commit CRLF line separators to the Git repository ..

2. 시도

해당 오류는 git에서 CRLF 개행 문자 차이로 인한 문제라고 한다.

윈도우에서는 line ending으로 CR(Carriage-Return, \r)과 LF(Line Feed, \n)을 사용하고 Unix나 Mac OS는 LF만 사용한다고 한다.

이는 문제를 발생시킬 수 있다고 한다.
실제 코드는 변경된 게 없는데 CR/LF 때문에 변경으로 착각해 commit을 하게 될 수 있으며, 변경 로그를 보거나 merge 시 문제의 소지가 될 수 있다.

따라서 이 오류를 해결해 주어야 하는데 ..

먼저 git이 Line Ending을 어떻게 처리하는지 알아보자. 세 가지 설정이 가능하다고 한다.

core.eol = native

  • 기본 설정, 시스템에서 line ending을 처리하는 방법에 따름

core.eol = crlf

  • CRLF를 line ending으로 사용

core.eol = lf

  • LF를 line ending으로 사용

다음으로, git object database에 checkin, checkout 할 때 어떻게 처리할 지 설정하는 변수도 설정해준다.

git은 .git 폴더에 모든 이력 데이터를 갖고 있는데, 이 이력 데이터는 key-value 형식의 데이터베이스이며, core.autocrlf는 텍스트 파일을 git object database에 checkin, checkout 시 어떻게 처리할 지를 설정하는 변수이다.

core.autocrlf = false

  • 기본 설정. 파일에 CRLF를 썼든, LF를 썼든 git은 상관하지 않고 파일 그대로 checkin, checkout 함. 이 것은 Line ending이 다른 OS에서는 텍스트 파일이 변경되었다고 나와서 여러 문제가 발생할 수 있음.

core.autocrlf = true

  • 텍스트 파일을 object database에 넣기 전에 CRLF를 LF로 변경

core.autocrlf = input

  • LF를 line ending으로 사용

3. 해결

위에 찾아본 명령어들 중, 어떤 것을 선택하면 좋을 지 찾아보다가
설정 할 수 있는 명령어를 찾게 됐다.

git config --global core.eol lf
git config --global core.autocrlf input

해당 명령어를 터미널에 입력해 실행한 뒤, commit을 다시 시도해보았더니 해결할 수 있었다 !

4. 배운 점

git commit시, CRLF 개행 문자 차이로 인한 문제가 발생할 수 있으므로,
commit 할 때, 해당 오류가 발생해서 commit이 안된다면 core.eolcore.autocrlf 명령어로 설정해주도록 하자 !!

git config --global core.eol lf
git config --global core.autocrlf input

출처

profile
(❁´◡`❁)

0개의 댓글