[ #1 ] MySQL - 구조

이때까지는 데이터베이스를 장고에서 제공하는 ORM을 통해서만 사용 해왔었는데요, 알고 제대로 써야겠다고 생각하여 기초부터 공부해려고 합니다.

본 포스팅은 유튜브 생활코딩님의 데이터베이스 강좌를 보고 정리한 내용입니다.

1. MySQL의 구조

관계형 데이터베이스는 엑셀과 같은 스프레드시트에 데이터를 저장합니다 즉 표에 정보가 저장된다는 말인데요.

표(Table)가 많아진다면?

  • 정리될 필요성이 생김(파일에서 디렉토리가 필요한 상황이 생기는것과 같음) MySql에서는 서로 연관된 표들을 그루핑해서 연관되어있지 않은 표들과 구분짓는 폴더가있는데 이를 database라 칭합니다.

  • Schema(database)는 표들을 그루핑할때 사용되는 일종의 폴더와 같습니다.

  • Schema 는 서로 연관된 데이터들을 그루핑 해준다는 것을 기억해줍시다.

  • 반면에 PostgreSQL에서는 이를 Mysql에서의 database는 Schema라고 불리우며 PostgreSQL 에서 database는 schema의 상위 개념입니다. Postgres에서의 database는 Mysql 에서는 database server과 같습니다. 헷갈릴 수 있으니 유의합시다.

그림으로 보면 아래와 같습니다.

mysql구조

2. DB 사용의 장점

데이터베이스는 자체적인 안전 체계가 있기에 데이터를 안전하게 보관할 수 있습니다

권한 기능이 있어, MySQL에 여러사람들을 등록할 수 있고 특정 롤을 지정해줄 수 있습니다.

3. MySQL 서버 접속

brew를 통해서 처음 mysql을 설치하면 root에 password가 설정되어있지 않은데 이를 설정해봅시다

  1. 먼저 MySQL은 멈춰있어야 합니다. 아래 커맨드를 입력해 종료해 줍시다.
    $ brew services stop mysql
    
  2. 그다음 mysql을 안전모드로 실행합니다.
    $ sudo mysqld_safe --skip-grant-tables
    
  3. 터미널을 하나 더 열고 password를 초기화해줍니다.
    mysql -u root
    UPDATE mysql.user SET authentication_string=null 
    WHERE User='root';
    FLUSH PRIVILEGES;
    exit;
    
  4. 마지막으로 새로운 비밀번호를 설정해주면 끝입니다.
    mysql -u root
    ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';
    
  5. 비밀번호와 함께 서버접속 하기
    $ mysql -u root -p
    Enter password: <yourpassword>