본문 바로가기
lean/life

대패 한 판 더.

by mattew4483 2020. 11. 14.
728x90
반응형

지난주, 처음으로 서버 구동에 성공했다.

카카오맵 api 승인을 깜빡해 지도가 안 뜨는 해프닝을 겪기는 했지만... 그래도 뭐.

이제 IP주소를 올리면 행요 서비스를 이용할 수 있다. 세상에!

 

하지만 아직 남은 일.

배포 단계에서는 Django의 기본 데이터베이스인 sqlite3를 쓸 수가 없다.

즉 외부 데이터베이스를 연결해야한다는 말씀.

멋사 세션 때 딱 한 번 맛을 봤던 mysql 요놈으로 정한다.

그렇다면 해야할 일, Django와 mysql과 unbuntu 친구들을 연결만 해주면 그만이다.

모든 일이 그렇듯, 말은 쉽다.

 

+ sudo cat django.log를 통해 장고에서 발생하는 log를 살펴볼 수 있다! 엄청 유용하니 기역 하자.


apt-get install mysql-client 로 간단하게 mysql을 설치하면 안 된다.

아무것도 모른 채 대충 맞겠지 하고 친 이 코드가 지금까지 나를 괴롭히고 있다. 정말 괴롭다.

 

멋대로 database를 생성하고 구글 속 코드를 중구난방 입력했더니...

아무리 superuser를 만들어도 admin로그인이 안 되는 굉장한 일이 생겨버렸다.

그리하여 내린 선택은? mysql 몽땅 삭제.

 

sudo apt-get remove --purge mysql* (이 녀석을 실행하면 굉장히 오류틱한 화면이 나온다. 당황 말고 yes선택)
sudo apt-get purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get remove dbconfig-mysql

이 친구들을 통해 기존 mysql파일들을 우선 몽땅 삭제해버렸다. 

더불어 약 24*7시간 동안의 노력 역시 삭제. 눈물이 난다.

아무튼 새로운 마음과 새로운 텅 빈 서버와 함께, 다시 시작한다.


local환경에서 pip install mysqlclient 하는 것처럼 깔지 않고, 새로운 코드를 써보도록 하자.

 

$ sudo apt-get install python-django

$ sudo apt-get install mysql-server

$ sudo apt-get install python-mysqldb

일단 요 삼총사를 통해 mysql을 설치한다. 

 

$sudo ufw allow mysql

$sudo systemctl start mysql

$sudo systemctl enable mysql

이 삼총사는 mysql포트를 열어주는 친구들.

 

sudo apt-get install mysql-server

우선 요 녀석을 통해 mysql server를 설치한 후,

sudo mysql_secure_installation

요 녀석을 통해 mysql 보안 설정할 수 있다.

저 installation을 입력하는 순간 온갖 영어와 선택사항이 뜨는데...

 

Enter current password for root (enter for none):  -- root계정 비밀번호 넣으렴! (근데 없으니까 그냥 엔터)

 

Set root password? [Y/n] y

New password: 
Re-enter new password:  -- 새로운 비밀번호 설정하렴!

 

Remove anonymous users? [Y/n] y  -- anonymous계정 삭제할 거니? 당근!

 

Disallow root login remotely? [Y/n] n  --- 원격 root계정을 허용할 거니? -> 허용합시다!

 

Remove test database and access to it? [Y/n] y  -- test데이터베이스 지울 거니? 

 

Reload privilege tables now? [Y/n] y  -- 저장하렴!

 

이런 흐름으로 y와 n을 쇽쇽 눌러주면 보안 설정이 완료된다.


뭔가가 된 것 같다면 mysql -u root -p 를 통해 sql을 실행시킨다.

mysql에 로그인한다는 개념으로 생각하면 되는데,

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Yes or No)
요놈이 출몰할 확률이 굉장히 높다.

using password가 Yes일 경우 비밀번호가 틀렸다는 뜻이며,

using password가 No일 경우에는 비밀번호 설정이 되어있지 않다는 뜻이다.

이때는 당황하지 않고 sudo mysql 로 우선 접속한다.

그럼 이런 mysql 스러운 곳에서 코드를 칠 수 있다! (이제 mysql속에 들어온 것이다. 얏호!)

show databases;  -- 데이터베이스 보기

use mysql;  -- mysql데이터베이스 사용

select User, Host, plugin from mysql.user;

이를 통해 user, host, plugin 등을 불러와 볼 수 있다.

그런데 여기서, plugin이 auth_socket인 root가 보이는가. 저 녀석 때문에 위의 1045 에러가 등장한 것이다.

auth_socket을 mysql_native_password로 바꿔줘야 한다.

update user set plugin='mysql_native_password' where user='root';  -- root의 plugin을 변경

flush privileges;  -- 변경사항 저장

select user, host, plugin from mysql.user;  -- 결과 보기

따라서 요 삼총사를 통해 변경해준다.

 

이후 settings.py에 데이터베이스, 유저, 비밀번호 등을 변경해주면 아름답게 연결...

이 되면 참 좋겠지만.

no module named pymysql 에러가 끊임없이 발생한다.

결국 포기. 다시 서버를 (처음부터!!!!!!!!!!) 열어 찬찬히 해보기로 한다.

728x90
반응형

'lean > life' 카테고리의 다른 글

postgres로 갈아타기  (0) 2020.11.16
끝나지 않는 mysql  (0) 2020.11.16
한 문장으로.  (0) 2020.11.11
오늘도 대패.  (0) 2020.11.08
주소로 위도경도 찾기  (0) 2020.11.06