SQL (Database)

·2023년 4월 24일
0

SQL

목록 보기
1/11

📌 MySQL

  • MySQL Command Line Client 을 열어서 다음과 같이 show databases; 를 입력한다.



  • MySQL Workbench 에서도 입력하면 같은 결과를 얻는다.
    하지만, 좀 더 편의성을 추가했기 때문에 ; 를 입력하지 않아도 실행된다.




📌 데이터베이스

📒 데이터베이스 정의

  • Database 란, 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합체

  • DBMS(Database Management System) 란, 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어
    ex) MySQL

  • 관계형 데이터베이스(RDB : Relational Database) 란, 서로 간에 관계가 있는 데이터 테이블들을 모아둔 데이터 저장공간
    ex) MySQL

    cf) 비관계형 데이터베이스
    데이터 간에 관계가 없고, 어떤 데이터셋을 무한정 누적시켜 저장만 하는 공간

  • SQL(Structured Query Language) 이란, 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어
    -> 파이썬처럼 프로그래밍 언어이지만, 대상이 DBMS 이다.

데이터 정의 언어
(DDL : Data Definition Language)
데이터 조작 언어
(DML : Data Manipulation Language)
데이터 제어 언어
(DCL : Data Control Language)
CREATE, ALTER, DROP 등의 명령어INSERT, UPDATE, DELETE, SELECT 등의 명령어GRANT, REVOKE, COMMIT, ROLLBACK 등의 명령어



📒 데이터베이스 관리

  • 명령프롬프트를 이용해서 mysql -u root -p 를 입력하고 password를 입력한다.
    (-u : user , root : root계정 , -p : password)

이 과정이 번거로워서 방법을 찾아보니 환경변수에 위의 경로를 추가해주면 된다.
제어판 -> 시스템 및 보안 -> 시스템 -> 고급 시스템 설정 -> 환경 변수 path에 추가

=> 설정해주니, 바로 mysql -u root -p 하니까 비밀번호 입력하라고 나온다 !


  • MySQL Command Line Client를 이용해서 mysql -u root -p를 입력하지 않아도 바로 password 입력할 수 있다.

  • ; : 즉시 실행해줘
  • show databases; : 현재의 데이터베이스 목록을 보여줘
  • create database mydb; : mydb 라는 데이터베이스를 생성해줘
  • use mydb; : mydb 로 이동 해줘
  • drop database mydb; : mydb 라는 데이터베이스를 삭제해줘




📌 User

📒 User 관리

현재 PC 에서만 접속 가능한 사용자 와 외부에서 접속 가능한 사용자와 나뉜다.

현재 PC 에서만 접속 가능한 사용자를 생성해보자.
'localhost' : 현재 PC 에서만 접속 가능한 사용자 라는 뜻
'%' : 외부에서 접속 가능한 사용자 라는 뜻

기본적으로 user 이름이 같으면 안되지만 host 정보가 다르면, user 이름이 같아도 상관없다.

  • use mysql; : mysql로 이동한다.

  • select host, user from user; : user 테이블에서 host와 user 정보를 가져와라.

  • create user 'zero'@'localhost' identified by '1234'; : 비밀번호가 '1234' 인 현재 PC에서만 접속 가능한 'zero'라는 유저를 생성해라.

  • drop user 'zero'@'%'; : 외부에서 접속 가능한 'zero'라는 유저를 삭제해라.


사용자 정보는 mysql 이라는 데이터베이스에서 관리한다. 그래서 user 테이블에서 host, user 정보를 가져오려면,
use mysql;select host, user from user; 의 순서로 실행해야 한다.



📒 User 권한 관리

  • use mysql 이 이미 적용되어 있는 상태로 mysql 데이터베이스로 이동되어 있는 상태이다 !

  • create database mydb; : mydb 데이터베이스 생성

  • create user 'zero'@'localhost' identified by '1234'; : 비밀번호가 '1234' 인 현재 PC에서만 접속 가능한 'zero'라는 유저를 생성

  • show grants for 'zero'@'localhost'; : 현재 PC에서만 접속 가능한 'zero'라는 유저의 권한 정보를 보여줘

  • grant all on mydb.* to 'zero'@'localhost'; : 현재 PC에서만 접속 가능한 'zero'라는 유저에게 mydb 데이터베이스의 모든 테이블(*)에 대한 모든 권한을 부여한다.

  • revoke all on mydb.* from 'zero'@'localhost'; : 현재 PC에서만 접속 가능한 'zero'라는 유저로부터 mydb 데이터베이스의 모든 테이블(*)에 대한 모든 권한을 취소한다.


만약, 권한을 삭제했는데도 권한이 존재한다면 flush privilege(새로고침) 을 해주면 된다.




0개의 댓글