본문 바로가기

DB(SQL)/mysql|maria

[MYSQL] USER(사용자) 생성/권한

반응형

1. MYSQL 접속

mysql -u root -p

2. 현재 사용자(user) 확인

-- Tool에서 사용할때도 동일 하다.
-- mysql database에 정보가 담겨져 있으므로 mysql database 선택
use mysql; -- mysql database 선택
select host, user, password from user; -- 조회

3. 사용자 추가 및 비밀번호 설정

-- user 생성
create user [user_name];
create user new_user;

-- user 생성 및 password 설정 1
create user [user_name]@[host] identified by '[password]';
create user new_user@localhost identified by 'new_user1234!';
create user new_user@'%' identified by 'new_user1234!'; -- '%' 의 의미는 외부에서의 접근을 허용

-- user 생성 및 password 설정 2
-- 난 왜 안되지
INSERT INTO user (Host, User, Password) VALUES ('localhost', '[user_name]', password('[password]'));
INSERT INTO user (Host, User, Password) VALUES ('%', '[user_name]', password('[password]'));

-- 적용
FLUSH privileges;

4. 사용자 삭제

drop user [user_name]@'[host]';
drop user new_user@'localhost';
drop user new_user@'%';

delete from user where user = 'user_name';

5. 권한 추가

-- DB 생성
create schema [database] default character set utf8;
create schema test default character set utf8;

-- DB 목록 확인
show databases;

-- 권한 생성
GRANT ALL [authority] ON [database].[table] TO [user_name]@'[host]';

-- (보안때문에 잘 안함) 모든 database의 모든 테이블에 대해서 모든 권한 생성
GRANT ALL PRIVILEGES ON *.* TO new_user@localhost;

-- test database의 모든 테이블에 대해서 모든 권한 생성
GRANT ALL PRIVILEGES ON test.* TO new_user@localhost;

-- test database의 test_table에 대해서 모든 권한 생성
GRANT ALL PRIVILEGES ON test.test_table TO new_user@localhost;

-- test database의 test_table에 대해서 모든 권한 생성
GRANT select, insert, update ON test.test_table TO new_user@localhost;

-- localhost에서만 접속가능
grant all privileges on *.* to 'new_user'@localhost;
-- 모든 ip 에서 접속가능
grant all privileges on *.* to 'new_user'@'%';
-- 172.168.0.1 에서만 접속가능
grant all privileges on *.* to 'new_user'@'172.168.0.1';

-- grant 옵션 부여
grant all privileges on *.* to 'new_user'@localhost with grant option;

-- 권한 생성하면서 password 변경
GRANT ALL PRIVILEGES ON [database].[table] TO [user_name]@[host] IDENTIFIED BY '[password]';
GRANT ALL PRIVILEGES ON test.* TO new_user@localhost IDENTIFIED BY 'new_user1234!';
 
-- 적용 (메모리에 반영)
flush privileges;

6. 권한 확인

SHOW GRANTS;
SHOW GRANTS FOR [user_name]@'[host]';
SHOW GRANTS FOR new_user@'%';

7. 권한 제거

-- 권한 삭제
revoke [authority] on [database].[table] from [user_name];

--모든 권한을 삭제
revoke all ON *.* from new_user;

 

반응형