본문 바로가기

MYSQL

[mysql] mysql 사용자 조회, 생성, 권한 주기, 비밀번호 변경하기, 삭제

1. mysql 사용자 생성

1. 해당 데이터베이스를 사용하는 계정을 생성해야 한다.

create user '계정아이디'@'localhost' identified by '패스워드';

 

[설명]

- mysql 8 이상부터는, 계정을 먼저 생성하고 권한을 부여해야한다.

- 이때, 패스워드 정책과 맞지 않는다는 오류가 뜰 수 있는데,

해결 방법은 아래의 글을 참고하자.

 - mysql password 정책 확인 및 변경하기 : https://yoons-development-space.tistory.com/13

 

 

2. mysql 사용자에게 권한 부여하기

2. 해당 계정에, 데이터베이스를 이용할 수 있는 권한을 부여해야 한다.

grant all privileges on db이름.* to '계정이름'@'localhost';

flush privileges;

 

[설명]

1. db이름.* : 해당 db에 대한 모든 권한을 의미

 

2. @'클라이언트명' : 해당 클라이언트에서 접근 가능하다는 의미

 - '%' : 모든 클라이언트에서 접근 가능하다(외부 ip로도 접근 가능하다)

 - 'localhost' : 해당 컴퓨터에서만 접근 가능하다(내부 ip로만 접근 가능하다)

 

3. flush privileges : DBMS에게 적용을 하라는 의미 (반드시 해주어야 한다)

 

3. mysql 사용자 조회하기

현재 사용자 목록을 확인하는 방법은 다음과 같다.

 

1. root 사용자로 mysql에 접속한다

mysql -uroot -p

2. database 중 mysql 데이터베이스를 선택한다

use mysql

3. 다음과 같이 입력한다

select user, host from user;

 

4. 사용자 비밀번호 변경하기

1. root 사용자로 mysql에 접속한다

mysql -uroot -p

2. database 중 mysql 데이터베이스를 선택한다

use mysql

3. 다음과 같이 입력한다

# 5.6 이하
> update user set password=password('new password') where user = 'root';

# 5.7 이상
> update user set authentication_string=password('new password') where user = 'root';

# 8.x 이상
> alter user 'root'@'localhost' identified with mysql_native_password by 'new password';

# 변경사항 적용하기
> flush privileges;

 

5. 사용자 삭제

drop user 'username'@'localhost';

flush privileges;

 

참고로, 아래와 같이 삭제하면 나중에 문제 생기므로 하지 말기

delete from user where user='username'