1. MYSQL 데이터베이스의 사용자 테이블에 직접 레코드 삽입하는 방법.
* 관리자 권한으로 접속후 database 목록을 보면 mysql 이라는 데이터베이스 존재.
해당 데이터내부를 살펴보면....
* 관리자 DB 내 user 테이블
- ssl_@@@@@
- x509_@@@@ => 보안관련
- @@@@_priv => @@@@ 권한
- x509_issuer : 디지털인증서 발행 주체
- x509_subject : 디지털인증서 발행 대상..? ''(공백)입력시 기본알고리즘 사용.
@ 계정 추가
[ insert into user(host, user, password, ssl_cipher, x509_issuer, x509_subject) values(IP_ADDRESS, ID, password(PASSWORD),'','',''); ]
* 추가된 IP_ADDRESS 만 접근 가능
* % 입력시 모든 ip 접속 가능
* Ex) 192.168.0.% -> 아이피 범위 제한 가능
@ 계정 삭제
[ delete from user where user=''; ] => 사용자계정에 루트계정이 없는 계정은 접속 불가
@ 권한 갱신
[ flush privileges; ] => 수정한 권한 갱신.
* 생성한 계정으로 접속
* [ mysql -u ID -p ]
-> Enter Password : 가 뜨면 비밀번호 입력.
## mysql -u ID -p PASSWORD 바로 입력해도 되나, 비밀번호가 노출되므로 2개로 나눠서 입력하는걸 권장한다.
* 생성 권한 부여하기
- 관리자 계정 내에서, mysql 데이터베이스 접근 - user 테이블 수정
- [ update user set create_priv='Y' where user = ID ; ] => 해당 ID에 생성 권한 부여
2. Grant 를 통한 계정 부여 방법
- 전체 데이터베이스에 한해서 권한 부여
- grant를 이용하면, flush privileges;(권한 갱신) 를 따로 해줄 필요 없음.
Ex) grant select on *.* to aaa@'localhost' identified by '1234';
- 아이디 aaa 에 패스워드 1234를 가진 계정에 select 기능만을 부여.
- *.* ( DB_NAME.TABLE_NAME) == 모든 데이터 베이스, 모든 테이블에 권한 부여
Ex) grant select on test05.student to bbb@'localhost' identified by '4444';
- 아이디 aaa에 패스워드 4444를 가진 계정은 test05의 student 테이블만 select 할수 있음.
ㅇ 포트 열기
* 방화벽 - 고급설정 - 인바운드 규칙 - 새규칙 - 포트 입력.
ㅇ 다른 호스트로 접속
[ mysql -h SERVER_IP -u ID -p PASSWORD ]