Server/- mysql

[ Mysql ] user, database 생성 및 권한부여(maria_db)

즐겁게 하하하 2022. 1. 9. 16:26
728x90

리눅스 서버 접속 (shell)   

$ ssh root@DB_IP (111.111.11.11)  
# 패스워드 입력

mysql DB 접속 

$ mysql -u root -p 
# 패스워드 입력  pw~~~


현재 생성된 사용자 계정을 확인

 mysql > use mysql;    // mysql database 선택
 mysql > select host, user, password from user;    // user 테이블 살펴보기 


사용자 생성

1. 기본생성

  • mysql > CREATE USER 'userId' identified by 'password'; 

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

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

  • mysql > CREATE USER 'userId'@'%' identified by 'password';

3. 특정 아이피 대역에서 접속가능하게 할때는 IP 대역 뒤로 %를 사용한다.

  • mysql > CREATE USER 'userId'@'192.168.%' identified by 'password';

4. 특정 아이피만 접속가능하게 할때는 IP전체를 써주도록 한다.

  • mysql > CREATE USER 'userId'@'192.168.xxx.xxx' identified by 'password';

5. 서버가 클라우드형태로 존재하거나 원격지에서 접속해야할 경우

   서버 아이피, 원격지에서 접속할 고정IP 또는 public ip를 추가하면 된다.

mysql > CREATE USER 'userId'@'121.xxx.xxx.xxx' identified by 'password';
mysql > CREATE USER 'userid'@'서버의 로컬 ip' identified by 'password';

이렇게 하면 was에서 접속하거나 원격지에서 접속하여 개발이 가능하다.

public ip는 공인 아이피(사용시 방화벽작업 필요) 를 검색하면 쉽게 얻을수 있다. 


DB 스키마생성  

$ create database DB_name;


 사용자 권한부여 

# grant 권한 privileges on DB이름.테이블 to '계정아이디'@'접속지'; 

      ex) grant all privileges on testDB.* to 'user1'@'localhost';        //localhost 는 내부에서만 접속가능
      ex) grant select on testUser.* to 'testDB'@'%';  

 

# 권한을 부여할때는 grant 명령어를 사용하고, 권한을 제거할때는 revoke 명령어를 사용한다.

 

로컬로 접속하는 경우( WAS 접속시 )

mysql > GRANT ALL PRIVILEGES ON AA.table TO 'userId'@'서버의 로컬 ip';

 

AA의 모든 테이블에 모든 권한을 추가할때는 db.* 를 사용

mysql > GRANT ALL PRIVILEGES ON AA.* TO 'userId'@'192.168.xxx.xxx';

 

권한과 pw 변경( 모든table , 모든권한, 어디에서나 접속가능 )

$ GRANT ALL PRIVILEGES ON *.* TO 'userId'@'%' IDENTIFIED BY 'user_pw'; 

  

원격지에서도 접속하고, WAS를 통해서도 접속할경우 두 계정에 권한을 부여해야한다.

Host User
localhost root
% userId
192.168.xxx.xxx userId
서버의 로컬 ip userId

사용자 권한삭제

사용자의 권한확인

mysql > SHOW GRANTS FOR 'userId'@'192.168.xxx.xxx';

 

권한 제거

mysql > REVOKE ALL PRIVILEGES ON AA.* TO 'userId'@'192.168.xxx.xxx';


사용자 비밀번호 변경 (mysql 5.7 이상)

mysql > ALTER USER 'userId'@'192.168.xxx.xxx' IDENTIFIED BY 'password'


사용자 계정삭제

DROP USER 'userId'@'%';

 

계정 삭제 확인

SELECT User, Host FROM mysql.user WHERE User='userId' AND Host='%';


변경사항 반영  

$ FLUSH PRIVILEGES; 


마리아 DB 재시작 및 명령어

pw 변경
MariaDB [(none)]> use mysql;
set password=password('~~~~~~');  

마리아 DB 재시작
systemctl restart mariadb

MariaDB [mysql]> select host, user, db from db;
+------+----------------+----------------+
| host | user           | db             |
+------+----------------+----------------+
| %    | AA             | AA_DB       |
| %    | BB             | BB_DB        |
| %    | CC             | CC_DB        | 
+------+----------------+----------------+
6 rows in set (0.001 sec)

 


User
User & DB

728x90