(두 블로그를 참고하였습니다.)
SQLD를 공부하다가 MySQL을 받아서 쿼리를 수행해보려고 하는데, 오류가 뜨면서 테이블이 생성되지 않아서 찾아보니, 역시 데이터베이스를 먼저 생성한 후, 권한을 부여해야만 실행이 가능했다.
이 과정은 이기적 출판사에서 나온 SQLD 이론서에는 나와있지 않아서 먼저 DB를 생성하는 것부터 실습해보려 한다.
1. 사용자 추가하기
데이터베이스를 사용할 사용자계정을 먼저 추가해보자.
1) MySQL Command Line Client 프로그램을 실행한다.
2) MySQL을 다운로드 하면서 등록한 패스워드를 입력한다.
3) 커맨드 명령 창에 'use mysql'을 입력한다.
use mysql
4) 등록된 사용자가 있는지 확인하기 위해 host와 user를 조회
select host, user from user;
5) 사용자 추가
create user 사용자명;
사용자를 localhost에 추가하면서 비밀번호까지 설정하려면
create user 사용자명@localhost identified by '비밀번호';
번외) 사용자 삭제
drop user 사용자명;
drop user '사용자명'@localhost;
2. 데이터베이스 생성하기
create database thon default character set utf8;
show databases;
※ default chracter sert utf8를 지정하지 않으면 한글이 깨져서 나온다고 한다.
DB 목록 전부 처음부터 있던 DB인데 찾아보니까 이 중에 몇 가지는 원래 제공되는 시스템 DB가 아니었다.
어쩌다 설치된 건지는 모르겠는데 sakila, world DB는 일종의 sample DB로 따로 다운받아야 되는 DB라고 한다.
information_schema는 MySQL 서버가 운영하는 모든 다른 DB에 대해 저장하는 장소이고,
mysql은 시스템 데이터베이스로 MySQL 서버가 운영될 때 필요한 정보를 가지고 있는 DB
perfromance_schema는 MySQL 서버가 운영중일 때 실행단의 여러 작업을 모니터링할 때 사용하는 DB
sys는 MySQL 서버의 유저,호스트,세션 등 MySQL 서버 실행 중의 이력을 확인하는 DB
여튼 thon이라는 DB를 만들었으니 이제 사용자에 권한을 부여해보자.
3. 사용자 권한 부여
GRANT ALL PRIVILIEGES ON DB명.* TO 사용자명@localhost;
FLUSH PRIVILIEGES;
DB명 뒤에 .* 은 해당 DB 내의 모든 테이블에 대한 권한을 부여한다는 뜻이다.
SQL문에서 * 은 전체를 의미한다.
만약 특정 테이블에 대한 권한만 부여하고 싶다면 ## DB명.테이블명 ## 을 사용한다.
권한을 부여하고 이를 적용하려면 ## FLUSH PRIVILIEGES; ##을 실행해야 된다.
3-1) 사용자 권한 확인
SHOW GRANTS FOR thon@localhost;
사용자에 권한이 부여되었고, 이제서야 DB에 테이블을 겨우 만들 수 있게 됐다!
다음으로는 SQLD를 공부하면서 테이블을 추가해보려고 한다.
'언어 > SQL' 카테고리의 다른 글
[기본] SQLD 2과목 1장 공부 정리 3 (테이블명 변경, 칼럼 추가/삭제/변경, 테이블 삭제, 뷰 생성/조회/삭제) (0) | 2020.09.02 |
---|---|
[기본] SQLD 2과목 1장 공부 정리 2 (DDL문에서 create table, constraint 설정, on delete cascade 옵션) (0) | 2020.09.01 |
[기본] SQLD 2과목 1장 공부 정리 1 (관계형 DB의 정의, SQL문의 종류, 트랜잭션의 특성) (0) | 2020.09.01 |
[기본] SQLD 1과목 2장 공부 정리 (정규화, 반정규화, 분산 DB) (0) | 2020.09.01 |
[기본] SQLD 1과목 1장 공부 정리 (데이터모델링, 3층스키마, 엔터티, 속성, 관계, 식별자) (0) | 2020.08.31 |