[ Mysql ] user, database 생성 및 권한부여(maria_db)
리눅스 서버 접속 (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) |