원격계정 접속관리
MariaDB를 설치하면 기본적으로 로컬( localhost)에서만 접속이 가능하고 외부에서는접속이 불가능하게 되어 있다.
외부에서 접속해보면 다음과 같은 오류 메시지가 나온다
Host '135.79.246.80' is not allowed to connect to this MySQL server
로컬에서 접속하여 SELECT Host,User,Password FROM mysql.user; 쿼리를 날려보면 localhost가 나온다.
즉 root 계정으로는 로컬에서만 접속가능하다.
(같은 방법으로 root 대신 다른 사용자명도 조회할 수 있다.)
MariaDB 설정
/etc/ mysql/my.cnf 설정 변경
bind_address 라인을 주석처리하거나0.0.0.0 또는* 로 세팅한다.
$ sudo vi /etc/mysql/my.cnf
#bind_address=127.0.0.1 # 주석처리
bind_address= *
MariaDB재기동
$ sudo service mysql restart
계정생성 & 권한설정
외부 접속을 허용할 계정을 생성하고 권한을 준다.
root 계정으로 MariaDB 접속
$ mysql -u root -p
계정 생성
''/* 내부 접속용 */
create user 'RemoteUser'@'localhost' identified by 'localPassword';
/* 모든IP 외부접속용 */
create user 'RemoteUser'@'%' identified by 'remotePassword';
/* 특정IP 외부접속용 */
create user 'RemoteUser'@'192.168.2.%' identified by 'remotePassword';
''
§ 내부와 외부 접속용 계정의 비밀번호는 다르게 세팅하는 것이 좋다.
§ 권한이 같으면 큰 의미 없다.
§ root 계정과는 무조건 다르게 세팅하자.
계정변경
모든 IP 허용
INSERT INTO mysql.user (host,user,password) VALUES ('%','root',password('패스워드'));
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
IP 대역 허용 ( 예: 111.222.xxx.xxx )
§ 다음과 같이 설정하면 111.222로 시작하는 모든 IP가 허용된다.
INSERT INTO mysql.user (host,user,password) VALUES ('111.222.%','root',password('패스워드'));
GRANT ALL PRIVILEGES ON *.* TO 'root'@'111.222.%';
FLUSH PRIVILEGES;
특정 IP 1개 허용 ( 예: 111.222.33.44 )
INSERT INTO mysql.user (host,user,password) VALUES ('111.222.33.44','root',password('패스워드'));
GRANT ALL PRIVILEGES ON *.* TO 'root'@'111.222.33.44';
FLUSH PRIVILEGES;
권한설정
''/* 내부 접속용 */
grant all privileges on DB_NAME.* to RemoteUser@'localhost';
/* 모든IP 외부접속용 */
grant all privileges on DB_NAME.* to RemotUser@'localhost';
/* 특정IP 외부접속용 */
grant all privileges on DB_NAME.* to RemoteUser@'192.168.2.%';
''
§ 내부와 외부 접속용 계정의 권한은 다르게 세팅하는 것이 좋다.
§ 방화벽 설정과 마찬가지로 외부접속 IP가 고정된다면 특정지어 세팅하는 것이 좋다.
'Database > MariaDB' 카테고리의 다른 글
우분투에서 MariaDB 설치하기 (0) | 2016.08.10 |
---|