마리아DB 유저추가
페이지 정보
작성자 미친새 작성일 20-02-21 11:49 조회 19,830 댓글 0본문
MySql을 버전 4부터 사용한거 같은데 이제는 버전5가 되었다.
우분투에서
$ sudo apt-get install mysql-server
로 MySql DBMS를 설치하면 root DB 사용자의 암호를 넣는 부분이
있고 이것으로 모든 설치가 완료된다.
그런데 외부에서 root로 접근하려면 안된다.
이것을 풀면 외부의 보안상의 문제가 발생하기 때문이다.
개발을 할 때에는 외부에서 root 접속을 하여
사용자도 만들고 database instance도 만들고 해야 하는데
그래도 외부 접속이 필요할 경우가 있다.
다음과 같은 과정을 거친다.
1) my.cnf 에 bind-address 설정 부분.
$ sudo vi /etc/mysql/my.cnf
로 파일을 열어,
bind-address를 찾아, 그 앞에 #으로 코멘트 처리한다.
디폴트로 자기 자신에서만 접속하도록 허용한다는 의미이다.
그 다음 mysql 서버를 재기동시킨다.
$ sudo /etc/init.d/mysql restart
2) 외부 호스트에서 root 사용자가 접속하도록 허용.
mysql에 들어가서 mysql database를 살펴본 다음,
테이블을 보면 user가 존재한다.
mysql> use mysql;
mysql> show tables;
mysql> select host,user from userG
mysql> select host,user from userG
*************************** 1. row ***************************
host: 127.0.0.1
user: root
*************************** 2. row ***************************
host: jeos
user:
*************************** 3. row ***************************
host: jeos
user: root
*************************** 4. row ***************************
host: localhost
user:
*************************** 5. row ***************************
host: localhost
user: debian-sys-maint
*************************** 6. row ***************************
host: localhost
user: root
6 rows in set (0.01 sec)
여기에서 보면 모든호스트(%)에서 root로 들어와도 된다는 허용 레코드가 없다.
(보안을 위해서는 접속 host ip를 지정하는 것이 좋다)
다음과 같은 mysql 명령으로 위의 내용을 추가한다.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'myroot' WITH GRANT OPTION;
위에서 myroot는 예로 든 root 암호이다.
이와 유사한 방법으로 새로운 사용자를 아래와 같이 등록시킬 수 있다.
(거의 root와 동일한 permission을 갖는다. permission은 따로 조종)
mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'user'@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'user'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;
mydb 대신 해당 database를, user 대신 해당 사용자 이름을, pass 대신 해당 암호를 입력하면 된다.
예전 4부터 사용되던 방법인데 5에서도 계속 잘 통용되고 있다.
우분투에서
$ sudo apt-get install mysql-server
로 MySql DBMS를 설치하면 root DB 사용자의 암호를 넣는 부분이
있고 이것으로 모든 설치가 완료된다.
그런데 외부에서 root로 접근하려면 안된다.
이것을 풀면 외부의 보안상의 문제가 발생하기 때문이다.
개발을 할 때에는 외부에서 root 접속을 하여
사용자도 만들고 database instance도 만들고 해야 하는데
그래도 외부 접속이 필요할 경우가 있다.
다음과 같은 과정을 거친다.
1) my.cnf 에 bind-address 설정 부분.
$ sudo vi /etc/mysql/my.cnf
로 파일을 열어,
bind-address를 찾아, 그 앞에 #으로 코멘트 처리한다.
디폴트로 자기 자신에서만 접속하도록 허용한다는 의미이다.
그 다음 mysql 서버를 재기동시킨다.
$ sudo /etc/init.d/mysql restart
2) 외부 호스트에서 root 사용자가 접속하도록 허용.
mysql에 들어가서 mysql database를 살펴본 다음,
테이블을 보면 user가 존재한다.
mysql> use mysql;
mysql> show tables;
mysql> select host,user from userG
mysql> select host,user from userG
*************************** 1. row ***************************
host: 127.0.0.1
user: root
*************************** 2. row ***************************
host: jeos
user:
*************************** 3. row ***************************
host: jeos
user: root
*************************** 4. row ***************************
host: localhost
user:
*************************** 5. row ***************************
host: localhost
user: debian-sys-maint
*************************** 6. row ***************************
host: localhost
user: root
6 rows in set (0.01 sec)
여기에서 보면 모든호스트(%)에서 root로 들어와도 된다는 허용 레코드가 없다.
(보안을 위해서는 접속 host ip를 지정하는 것이 좋다)
다음과 같은 mysql 명령으로 위의 내용을 추가한다.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'myroot' WITH GRANT OPTION;
위에서 myroot는 예로 든 root 암호이다.
이와 유사한 방법으로 새로운 사용자를 아래와 같이 등록시킬 수 있다.
(거의 root와 동일한 permission을 갖는다. permission은 따로 조종)
mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'user'@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'user'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;
mydb 대신 해당 database를, user 대신 해당 사용자 이름을, pass 대신 해당 암호를 입력하면 된다.
예전 4부터 사용되던 방법인데 5에서도 계속 잘 통용되고 있다.
관련링크
- http://mcchae.egloos.com/6942732 5476회 연결
댓글목록 0
등록된 댓글이 없습니다.