SQL은 데이터를 보다 쉽게 검색하고 추가, 삭제, 수정 같은 조작을 할 수 있도록 고안된 컴퓨터 언어
관계형 데이터베이스에서 데이터를 조작하고 쿼리하는 표준 수단
DML (Data Manipulation Language): 데이터를 조작하기 위해 사용한다. INSERT, UPDATE, DELETE, SELECT 등이 여기에 해당한다.
DDL (Data Definition Language): 데이터베이스의 스키마를 정의하거나 조작하기 위해 사용한다. CREATE, DROP, ALTER등이 여기에 해당한다.
DCL (Data Control Language): 데이터를 제어하는 언어이다. 권한을 관리하고, 데이터의 보안, 무결성등을 정의한다. GRANT, REVOKE 등이 여기에 해당한다.
cmd창에서 데이터 베이스 관리 시스템 접속
mysql -uroot -p
MySQL 관리자 계정인 root로 데이터베이스 관리 시스템에 접속하겠다는 것이다.
database 생성
mysql> create database DB이름;
create database connectdb;
Database를 생성했다면, 해당 데이터베이스를 사용하는 계정을 생성해야 한다. 또한, 해당 계정이 데이터베이스를 이용할 수 있는 권한을 줘야 한다. 아래와 같은 명령을 이용해서 사용자 생성과 권한을 줄 수 있다. db이름 뒤의 *는 모든 권한을 의미한다. @'%'는 어떤 클라이언트에서든 접근가능하다는 의미이고, @'localhost'는 해당 컴퓨터에서만 접근가능하다는 의미이다.
flush priviliges는 DBMS에게 적용을 하라는 의미다. 반드시 실행해야 한다.
grant all privileges on db이름. to 계정이름@'%' identified by '암호';
grant all pribileges on db이름. to 계정이름@'localhost' identified by '암호';
flush privileges;
예시
사용자 계정이름은 connectuser, 암호는 connect123!@#, 해당 사용자가 사용하는 데이터베이스는 connectdv로 계정을 생성하라면 다음과 같이 명령을 수행한다.
grant all privileges on connectdb.* to connectuser@'%' identified by 'connect123!@#';
grant all privileges on connectdb.* to connectuser@'localhost' identified by 'connect123!@#';
flush privileges;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'connect123!@#'' at line 1
MySQL8 부터는 grant로 user 생성이 불가능하다
CREATE USER 'connectuser'@'%' IDENTIFIED BY 'connect123!@#'; GRANT ALL PRIVILEGES ON *.* TO 'connectuser'@'%' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON connectdb.* to 'connectuser'@'%' WITH GRANT OPTION; flush privileges;
cmd창을 열고 실행한다.
mysql -h호스트명 -uDB계정명 -p데이터베이스이름
db 이름이 connectdb, db계정이 connectuser, 암호가 connect123!@# 일 경우
mysql -h127.0.0.1 -uconnectuser -p connectdb
quit;