MySQL 접속 (mysql : CMD)
$> mysql -u root -p
$> mysql -u <계정이름> -p
$> Enter password: (계정의 비밀번호)
SQL
복사
원하는 이름으로 DATABASE 생성 (CREATE)
CREATE DATABASE (생성할 DATABASE 이름);
SQL
복사
현재 서버 안 DATABASE/현재 DATABASE 안 table 조회 (SHOW)
SHOW DATABASES;
SHOW TABLES;
SQL
복사
원하는 이름의 DATABASE 접속 (USE)
USE (접속할 DATABASE 이름)
(성공 시 아래와 같이 뜬다)
DATABASE changed
SQL
복사
기존의 DATABASE table을 다른 DATABASE table로 이동 (RENAME TABLE ... TO ~)
•
(주의) .table을 뒤에 붙이는 걸 잊지 말자.
RENAME TABLE (기존의 DATABASE 이름).table TO (옮겨질 DATABASE 이름).table;
SQL
복사
원하는 DATABASE 삭제 (DROP)
DROP DATABASE (삭제할 DATABASE 이름)
SQL
복사
table에서 원하는 column 출력 (SELECT ~ FROM ...)
•
*는 wildcard라 불리우며, 모든이라는 뜻을 지닌다.
# table의 모든 column을 출력
SELECT * FROM (table 이름)
# table의 특정 column 출력
SELECT (출력할 column 1) (출력할 column 1) FROM (table 이름)
SQL
복사
사용자 계정 생성 : CREATE USER
CREATE USER '계정이름'@IP IDENTIFIED by '비밀번호';
SQL
복사
사용자 계정 비밀번호 변경 : SET PASSWORD
SET password for 'userid'@'%' = 'password';
SQL
복사
사용자 계정 권한 부여 : GRANT
GRANT SELECT, INSERT, DELETE, UPDATE ON <데이터베이스이름>.* TO <ID> IDENTIFIED by <ID>;
GRANT ALL privileges ON classicmodels.* TO '계정이름'@'%'; -- %는 모든 IP주소
SQL
복사
권한 정의
•
SELECT : 데이터 베이스의 데이터 질의
•
INSERT : 새로운 데이터 삽입 권한
•
DELETE : 기존 데이터 레코드 삭제 권한
•
UPDATE : 기존 데이터 레코드 업데이트 권한
<데이터베이스 이름>.*
•
권한이 적용되는 데이터베이스와 테이블 정의
•
<데이터베이스 이름>에 포함된 모든 테이블에 지정된 권한 적용
TO <ID>
•
권한이 적용되는 사용자 계정 지정
desc 테이블명
•
스키마 정보가 출력
•
단독으로 쓰일땐 description
•
select와 같이 쓰일땐 descending
FLUSH PRIVILEGES;
•
현재 사용중인 MySQL의 캐시를 지우고 새로운 설정을 적용하기 위해 사용
•
이 명령어를 사용하려는 사용자는 reload권한을 가지고 있어야 함.
•
보통은 INSERT, DELETE, UPDATE를 통해 사용자를 추가, 삭제, 권한 변경 등을 수행하였을 때 이 변경 사항을 반영하기 위하여 사용한다.
이 떄 FLUSH PRIVILEGES는 grant 테이블을 reload함으로서 변경 사항을 즉시 반영하도록 한다.
•
만약 INSERT, DELETE, UPDATE와 같은 SQL문을 사용하지 않고 바로 grant 명령어를 사용하여 작업하였다면 FLUSH PRIVILEGES를 실행할 필요가 없어진다.
•
단 엄청난 부하가 걸림, 꽤나 성능에 영향을 준다.