Wecode/Session

Session-MySQL 설치 및 연결 / 기본 사용법(MySQL install/connect/ basic command)

청렴결백한 만능 재주꾼 2020. 5. 19. 22:03
반응형

MySQL 설치

관계형 DB

 

$ brew install mysql

brew 명령어를 위한 HomeBrew 패키지 관리자 미설치시 아래 명령어를 통해 설치 필요

$ /usr/bin/ruby -e "$(curl -fsSL <https://raw.githubusercontent.com/Homebrew/install/master/install>)"

 

MySQL 설정

아래 명령어로 mysql을 시작합니다.

$ mysql.server start

아래 명령어로 기본 설정을 시작합니다.

$ mysql_secure_installation

이제 여러 질문들이 출력됩니다.출력에 대한 답은 본인이 한 방법으로만 간단하게 기술하겠습니다.

 

 

 

 

 

1. 비밀번호 복잡도 검사 과정 (n)

```

Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin? Press y|Y for Yes, any other key for No:

```

위의 과정은 복잡한 비밀번호 설정을 위한 과정을 거치겠냐고 묻는 과정이며,No로 스킵하였습니다.

 

 

 

 

 

2. 비밀번호 입력 & 확인

 

```

Please set the password for root here. New password: Re-enter new password:

```

위의 과정은 루트 비밀번호를 입력하는 과정입니다.비밀번호와 비밀번호 확인란을 입력하게 됩니다.

 

 

 

 

 

3. 익명 사용자 삭제 (y)

```

By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) :

```

y

익명 사용자를 삭제할 것인지 묻습니다.y를 입력하였습니다.

 

 

 

 

 

4. 원격 접속 허용하지 않을 것인가? (n)

```

Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) :

```

y

원격 접속을 허용할 것인지 묻습니다,로컬에서만 개발 예정이기에 y를 입력했습니다.

 

 

 

 

5. test DB 삭제 (y)

 

```

By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) :

```

test 데이터베이스 삭제를 묻고 있습니다.No를 입력하였습니다.

 

 

 

 

 

6. previlege 테이블을 다시 로드할 것인지 (y or n)

```

Reload privilege tables now? (Press y|Y for Yes, any other key for No) :

```

previlege 테이블을 다시 로드할 것인지 묻습니다.

yes를 입력, 과정을 마칩니다.

 

 

 

 

```

All done!

```

위의 메세지와 함께 설정이 종료됩니다.

 

추가적으로 mysql server가 재부팅과 상관없이 켜져있을 수 있도록 brew services를 이용하여 서버를 켜두겠습니다.

 

$ brew services start mysql

 

 

MySQL 사용

$ mysql -u root -p

위 명령어 입력 후 루트 비밀번호를 입력하여 mysql을 사용할 수 있게 됩니다.

 

 

 

 

이거 해주면 암호가 없어짐. mysql들어갈 때 안 쳐도 됨.

mysql > use mysql;

mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

mysql > FLUSH PRIVILEGES;

 

 

Django 3.0 MySQL 연결하기

$ pip install mysqlclient

 

 

 

sql 명령어

show tables;

show databases;

use [database_name]

use mysql;


 

 

 

 

create database starbucks character set utf8mb4 collate utf8mb4_general_ci;

클래스가 테이블 되는거여~ 매핑시켜줌

use mysql;

--> 하면 mysql 데이터베이스로 가는 것

 

 

 

그리고 가상환경하나 만들고

 

장고로 가서

startproject하나 해준다.

 

그리고 

manage.py있는 곳에

 

my_settings.py 파일 하나 만들고

```

python

DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.####',
'NAME': '######',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '####',
}
}

```

 

이렇게 넣어준다. 

 

 

그리고  settings.py에 가서

 

기본 데이터베이스 쪽 주석처리하고

 

DATABASES = my_settings.DATABASES

 

실행한 모습

 

 

그리고 모델에 데이터 실험용으로 하나 만들어주고 실험을 해본다. 

 

아까 내가 지정한

 

은 까먹으면 안된다. (my_settings.py에 저장한 것)

 

 

 

다시 

>>> mysql -u root -p

하고 mysql환경에 들어가서

 

>>>use [내가 지정한 데이터베이스 이름];

 

>>>show tables;

>>>explain [table_이름];

Sql에서 실험한 결과

 

 

 

 

 

>>>import os

>>>os.getcwd()

--> 현재 디렉토리 가져오기

>>>os.chdir("..")

--> 한칸 뒤로 가기

 

대충 크롤링한 것 넣는거

 

 

 

import csv

import os

import django

import sys

 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "vugue.settings")

django.setup()

 

 

임포트 product.modrls import *

하고

 Csv파일 path 넣어주고

 

with open(IMAGE_CSV_PATH, newline='') as image_csvfile:

 

     menu=0

     category = 0

     cnt = 0

     for row in data_reader:

         print(row)

         drink = Drink.objects.get(id=int(row['drink_id']))

 

등등으로 돌림

 

User.objects.all().query 라고 shell이 치면 장고가 번역해줌 ! 그래서 나온 결과로

sql가서 치면 결과 잘 나옴!

반응형