336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
서버 관리를 하다보면 mysql 사용자 계정을 추가해 줄때가 있다.
MySQL 접속 및 데이터 베이스 추가
# mysql -u root -p
사용자 계정을 추가하기 전에 먼저 현재 생성된 사용자 계정을 확인한다.
mysql > use mysql; // mysql database 선택
mysql > select host, user, password from user; // user 테이블 살펴보기
![](https://t1.daumcdn.net/cfile/tistory/2769D73753EB4E2F07)
사용자 추가 (권한추가)
mysql > create user 사용자ID; // 사용자 추가
mysql > create user userid@localhost identified by '비밀번호';
// 사용자(user)를 추가하면서 패스워드까지 설정
기존에 사용하던 계정에 외부 접근 권한을 부여하려면, Host를 '%' 로 하여 똑같은 계정을 추가한다
mysql > create user 'userid'@'%' identified by '비밀번호'; // '%' 의 의미는 외부에서의 접근을 허용
![](https://t1.daumcdn.net/cfile/tistory/27698C3F53EB1FB806)
다른 방법으로는
mysql > USE mysql; // mysql database 선택
mysql > INSERT INTO user (Host, User, Password) VALUES ('localhost', '계정아이디', password('비밀번호'));
mysql > INSERT INTO user (Host, User, Password) VALUES ('%', '계정아이디', password('비밀번호'));
mysql > FLUSH privileges;
mysql > drop user '사용자ID'@localhost; // 사용자 삭제
![](https://t1.daumcdn.net/cfile/tistory/24076C4A53EB206E09)
mysql > select * from user; // 등록된 모든 사용자 ID 조회
mysql > delete from user where user = '사용자ID'; // 사용자 삭제
계정이 생성되었다면, 그 계정이 접근할 수 있는 데이터베이스를 생성하고 권한을 부여해야 한다
데이터베이스 생성
mysql > show databases; // DB 목록 확인
![](https://t1.daumcdn.net/cfile/tistory/2518733E53EB190E3F)
msyql > create database DB명; // 데이터베이스 생성
![](https://t1.daumcdn.net/cfile/tistory/2343C13E53EB1B6502)
msyql > create schema DB명 default character set utf8; -- 둘중에 하나를 입력하면 DB 생성됨
mysql > create database DB명 default character set utf8;
// default character set을 지정하지 않으면 한글이 깨져서 나오므로 주의해야 한다.
![](https://t1.daumcdn.net/cfile/tistory/2536D03A53EB2AFB23)
msyql > drop database DB명; // 데이터베이스 삭제
![](https://t1.daumcdn.net/cfile/tistory/264CEE3653EB1C1B01)
사용자에게 데이터베이스 사용권한 부여
MySQL은 사용자 이름, 비밀번호, 접속 호스트로 여러분을 인증한다.
MySQL은 로그인을 시도하는 위치가 어디인가 하는 것도 인증의 일부로 간주한다.
MySQL 에서 사용자 계정을 추가하고 권한을 추가하거나 제거하는 데 GRANT 와 REVOKE 명령을 사용하기를 권장한다.
사용자에게 허가된 것을 확인하려면 SHOW GRANTS 를 사용한다.
IDENTIFIED BY '비밀번호'; 는 권한부여를 하면서 비밀번호까지 변경하고자 하는 경우
이므로 비밀번호는 변경하지 않으려면 이 부분을 빼면 된다.
mysql > GRANT ALL PRIVILEGES ON DB명.테이블 TO 계정아이디@host IDENTIFIED BY '비밀번호';
// 계정이 이미 존재 하는데 'identified by '비밀번호' 부분을 추가하면 비밀번호가 변경된다
mysql> GRANT ALL privileges ON DB명.* TO 계정아이디@locahost IDENTIFIED BY '비밀번호';
mysql> GRANT ALL privileges ON DB명.* TO 계정아이디@'%' IDENTIFIED BY '비밀번호';
mysql > grant all privileges on DB명.* to userid@'%' identified by '비밀번호' ; //모든 원격지에서 접속 권한 추가
host에 '200.100.%' 로 하면 IP주소가 200.100.X.X 로 시작되는 모든 IP에서 원격 접속을 허용한다는 의미
host에 '200.100.100.50' 으로 하면 IP주소가 200.100.100.50 인 곳에서만 원격 접속을 허용한다는 의미
mysql > grant all privileges on test.* to userid@localhost identified by '비밀번호';
// user 에게 test 데이터베이스 모든 테이블에 대한 권한 부여
mysql> grant select, insert, update on test.* to user@localhost identified by '비밀번호';
// user 에게 test 데이터베이스 모든 테이블에 select, insert, update 권한 부여
mysql> grant select, insert, update on test.* to user@localhost; -- 패스워드는 변경없이 권한만 부여하는 경우
// user 에게 test 데이터베이스 모든 테이블에 select, insert, update 권한 부여
mysql> grant all privileges on *.* to user@localhost identified by '비밀번호' with grant option;
// user 에게 모든 데이터베이스 모든 테이블에 권한 부여
// 전역 권한은 모두 광범위한 보안문제가 수반되므로 권한을 허용하는 경우 신중해야 함
mysql > flush privileges; // 변경된 내용을 메모리에 반영(권한 적용)
![](https://t1.daumcdn.net/cfile/tistory/2141964053EB306A0A)
사용자에게 부여된 권한 확인
mysql > SHOW GRANTS FOR test@localhost; -- userid 와 host명까지 붙여서 검색해야 함
mysql > SHOW GRANTS FOR test@'%';
mysql > SHOW GRANTS FOR test@'200.100.100.50';
![](https://t1.daumcdn.net/cfile/tistory/2736313355C8135922)
사용자에게 데이터베이스 사용권한 제거
revoke all on DB명.테이블명 from 사용자ID; // 모든 권한을 삭제
![](https://t1.daumcdn.net/cfile/tistory/2659C84755C8146320)
이제 다시 show grants 로 정보를 확인해보면
user 정보는 남아 있는데, 권한부여 정보는 삭제되고 없는 것이 보인다.
![](https://t1.daumcdn.net/cfile/tistory/237F954055C8150D06)
사용자 계정마저 삭제하고 권한 설정 정보를 확인하려고 하면 Error 가 발생하는 걸 확인할 수 있다.
![](https://t1.daumcdn.net/cfile/tistory/27738B4D55C815DC0D)
사용자 계정 삭제
mysql > drop user userid@'%';
mysql > drop user userid@localhost;
![](https://t1.daumcdn.net/cfile/tistory/254E483B53EB593012)
위에 있는 것과 비교해서 host 가 % 로 된 것이 삭제되었다.
![](http://dbdbdeep.com/images/banner/S00135017A/250x250.gif)