21.12.27 MySQL과 WSL2 Django와 연동하기 / MySQL 계정 생성,접속,삭제

2021. 12. 28. 02:10작업/Django

https://daphne-dev.github.io/2020/10/01/django-mysql/

 

Daphne's blog

Daphne의 개발 블로그입니다

daphne-dev.github.io

 

MySQL 설치하기 (mysql-server와 mysql-client 둘다 설치해주셔야함)

# 혹시모르니 가상환경에 들어간 후 다음 코드 실행
sudo apt-get update
sudo apt-get install mysql-server
# pip install mysqlclient 나는 이게 안되서
sudo apt-get install mysql-client

# 파이썬에서는 mysqlclient라는 라이브러리로 MySQL에 쉽게 연동이 가능하다.

 

pip install mysqlclient하려는데 안 깔림..

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

이런 에러가 뜸..

일단 우분투 버전 확인과 mysql_config not found래서 한번 확인해봄

sudo apt install libmysqlclient-dev를 깔아봄

그후 다시 mysql_config --version

+ 결국 안되서 sudo apt-get install mysql-client로 설치함

mysql 버전 번호

MySQL 실행하기

# mysql 잘 깔렸나 버전확인
mysql --version

# mysql 실행
sudo service mysql start
# 만약 su: warning: cannot change directory to /nonexistent: No such file or directory 이런 에러가 뜬다면
# 우분투 환경에서 다음 코드 실행

sudo service mysql stop
sudo usermod -d /var/lib/mysql/ mysql
sudo service mysql start
sudo mysql -u root -p

mysql> 이 보인다면 mysql에 들어온 것이 성공한 것이다.

DB에 접속 후

SHOW DATABASES; 를 입력하면 현재 DB목록이 나온다.

MySQL 계정을 생성하기 위해서 mysql이라는 DB에 접근하자.

그 다음 예시를 위해 example1이라는 데이터베이스를 만든다

CREATE DATABASE example1;
SHOW DATABASES;

MySQL 계정 생성 및 권한주기

# mysql 이라는 DB에 접근
USE mysql;
# 현재 생성되어있는 계정의 목록을 볼 수 있음.
SELECT User, Host FROM user;
# 계정 생성하기
# CREATE USER '계정이름'@'접근가능한 IP' IDENTIFIED BY '비밀번호';

CREATE USER 'seoyoon1'@'localhost' IDENTIFIED BY '비밀번호';

이제 이 계정이 exampl1 DB를 사용할 수 있도록 권한을 부여하자.

GRANT ALL PRIVILEGES ON example1.* TO seoyoon@localhost;
SHOW GRANTS FOR 'seoyoon1'@'localhost';

MySQL 끄기

exit

완전 쿨하게 보내버린다..

 

Django와 연동

아까 Bye 한 이후로 mysql 상태 보니까 자동으로 stopped 된다

다음에 열 때는 restart하면 될 것 같다.

MySQL 연동용 프로젝트1을 만들었다. 여기에서 아까 만들었던 DB인 example1을 연결시켜보자.

+

그런데 자꾸 이런 에러가 뜬다

이걸 아무리 깔아봐도..안된다 그래서 일단 이 seoyoonenv는 포기하고 poetry먼저 시도해보기로 했다.

 

+ 그러려다가 일단 virtualenv로도 하는 법을 알아야할 것 같아서 seoyoonenv로 다시시도

참고로 나는 윈도우지만 wsl2를 사용해서 우분투에서 개발중이고, x86_64인걸로 봐서 64비트임.

 

+ 다시 시도 sol1

https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient

 

Python Extension Packages for Windows - Christoph Gohlke

by Christoph Gohlke, Laboratory for Fluorescence Dynamics, University of California, Irvine. Updated on 26 December 2021 at 20:23 UTC. This page provides 32 and 64-bit Windows binaries of many scientific open-source extension packages for the official CPyt

www.lfd.uci.edu

여기서 나에게 맞는 wheel을 찾아 설치할까 했는데.. 이건 윈도우 전용인 것 같아서 패스했다.

+ sol2.

내 우분투 사양 lscpu x86_64라는거 보니 64비트임

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
pip install mysqlclient

된 건가..?

ㅎ그흑흑흑흑..흑흑..흑흑 된거같은데..

manage.py
settings.py

+ db 내용 바뀔때마다 터미넬에서 migrate 해야함

python3 manage.py migrate

# 서버 실행
python3 manage.py runserver

https://uni2237.tistory.com/73

 

[Django] 02. 장고 app 만들기 + db model 설정

1. app 생성 $ python manage.py startapp self_checkout 2. settings 수정 애플리케이션 생성 후 장고한테 새로 만든 app을 사용할거라고 알려줘야한다. 해당 역할을 하는 파일 : mysite/settings.py settings.p..

uni2237.tistory.com

settings.py 수정

models.py에 생성할 DB 테이블들 추가

내가 만든 모델 ( Seoyoon_Item : 아이템들의 가격,이름,피드 등 과 Meta : 관리되었나 여부 등 )

migrate, migration

migration : 장고 모델에 변화가 생겼다는 걸 알려줌

migrate : 실제 DB에 모델 추가 반영

 

여기까지 하면 DB 테이블들을 모두 models.py에 반영했을 것이다.

즉, models안에 있는 model들 (Seoyoon_Item과 Meta)  는 DB의 테이블이 되는 느낌인가보다

이 중에서 Seoyoon_Item이 admin 페이지에서 관리되었으면 하는 DB라면?

admin.py에 모델 등록

python3 manage.py createsuperuser

python3 manage.py runserver

models에서 설정한 DB가 API칸에 들어있는 것을 확인할 수 있다

이렇게 페이지에서 DB를 추가,수정,삭제할 수 있다! 신기하다

 

+ MySQL 계정 설정 링크 깨질까봐 스샷 첨부하였다.

https://blog.jiniworld.me/72

 

[MySQL] 3. user(계정) 생성, 로그인, 변경, 삭제

이전 시간에서 MySQL 8.0 Server 설치와 database 생성/삭제/변경 에 관해 알아봤습니다. 계정을 추가적으로 생성하지 않았기 때문에 로그인 가능한 계정은 root 뿐입니다. root 계정은 관리자 계정으로,

blog.jiniworld.me