BE/Database

[MySQL] 사용자 비밀번호 변경, 사용자 추가, 권한 추가 및 확인

Bans 2022. 9. 9. 14:02

잊지않게 기록해두는 기록..

 

 

1. MySQL 에 루트 권한으로 로그인!

mysql -u root -p

초기 접속이면 root 로 비밀번호가 설정되어 있지만,

MySQL 루트 사용자에 대한 암호를 설정하지 않은 경우 sudomysql로 로그인할 수 있다고 한다. (아직 해보진 않았다)

 

 

2. MySQL 사용자 암호 설정

mysql> ALTER USER 'user-name'@'localhost' IDENTIFIED BY 'NEW_USER_PASSWORD';
mysql> FLUSH PRIVILEGES;

나의 경우는 일단 'root' 사용자의 계정 설정부터 다시 설정한 후, 다른 세팅을 시작했다.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '내가 사용할 비밀번호'
mysql> FLUSH PRIVILEGES;

 

3. MySQL 사용자 생성

// 기본생성
mysql> CREATE USER 'userId' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;

// 원격접속 허용 생성 (모든 원격지에서 접속 가능)
mysql> CREATE USER 'userId'@'%' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;

// 특정 아이피 대역에서 접속 가능 (IP 대역 뒤로 %)
mysql> CREATE USER 'userId'@'192.168.%' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;

// 특정 아이피 만 접속 가능 - IP 전체 작성
mysql> CREATE USER 'userId'@'192.168.xxx.xxx' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;

원격접속 허용 사용자 생성 모든원격지에서 접속가능하도록 할때는 '%'를 붙여준다.

또 /etc/mysql/my.cnf 에서 bind-address 설정을 127.0.0.0 또는 주석 처리해야 원격접속이 가능하다.

 

 

4. MySQL 사용자 권한 부여

// 생성된 사용자에게 권한 부여 (exdb 의 extable 에만)
mysql> GRANT ALL PRIVILEGES ON exdb.extable TO 'userId'@'%';
mysql> FLUSH PRIVILEGES;

// 생성된 사용자에게 권한 부여 (exdb 전체)
mysql> GRANT ALL PRIVILEGES ON exdb.* TO 'userId'@'%';
mysql> FLUSH PRIVILEGES;

// mysql database user table 확인
mysql> use mysql;
mysql> SELECT Host, User FROM user;

// 특정 유저의 권한 확인
mysql> SHOW GRANTS FOR 'userID'@'%';

 

5. MySQL 사용자 권한 삭제 및 사용자 삭제

// 사용자 권한 제거
mysql> REVOKE ALL PRIVILEGES ON devdb.* FROM 'userId'@'192.168.xxx.xxx';

// 사용자 제거
mysql> DROP USER 'userId'@'localhost'