본문 바로가기
데이타베이스

[ MYSQL ] 사용자추가, 외부접속권한

by 보이드메인 2016. 1. 5.

[root@blackbelt ~]# mysql -u root -p


1. mysql 설치후 접속이 안될 때,


방화벽을 점검한다.


2.  mysql root 로 접속하여,  New user 를 추가하고,  권한을 부여한다.

** 이때,  database 가 이미 존재해야하므로, root 계정으로 접속하여 일단 database 생성부터한다.


그런다음에,


- localhost 권한도 부여하고,

- ‘%’  외부 접속권한도 부여한다.


mysql> grant all privileges on ems_db.* to ems@localhost identified by'ems';

Query OK, 0 rows affected (0.00 sec)


mysql>  grant all privileges on ems_db.* to ems@'%' identified by'ems';

Query OK, 0 rows affected (0.00 sec)


mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)



3. mysql -u xxxx -p 로 콘솔접속이 가능한지를 본다.


-------------------------------------------------------------------------------------------


GRANT문을 사용해 사용자를 추가하거나 권한을 부여할수도 있습니다.

GRANT ALL ON TO @ IDENTIFIED BY '비밀번호';



사용자 권한 삭제는 REVOKE문을 사용하시면 됩니다.

REVOKE ON FROM ;



1) user1에 모든 db의 권한을 줄때 ( root를 제외한 super user : dba )

localhost의 권한

grant all privileges on *.* to user1@localhost identified by 'pass1';


%의 권한

grant all privileges on *.* to user1 identified by 'pass1';


2) user1에 db1의 사용권한을 줄때

localhost의 권한

grant all privileges on db1.* to user1@localhost identified by 'pass1';


%의 권한 (모든 권한)

grant all privileges on db1.* to user1@'%' identified by 'pass1';


3) user1에 db1의 tb1의 권한을 줄때

localhost의 권한

grant all privileges on db1.tb1 to user1@localhost identified by 'pass1';


%의 권한

grant all privileges on db1.tb1 to user1@'%' identified by 'pass1';


권한 삭제는

REVOKE all on *.* from user1


--------------------------------------------------------------------------------------------------------------------------

출처 : http://msgzoro.egloos.com/3274111

--------------------------------------------------------------------------------------------------------------------------

보통 기본설치만 한 상태면 localhost로만 접속이 가능하도록 설정이 되어있는데, 외부에서 접속이 가능하도록 설정을 바꿔보자.

여기서는 root계정을 예로 들어 설명한다.

1. mysql 접속 후 mysql database 선택

mysql> use mysql;


2. user 테이블 살펴보기

mysql> select host, user, password from user;


root 의 host 값들은 localhost, 127.0.0.1 등으로 기본 등록되어 있지만, 외부접속을 나타내는 값이 없다. 특정 아이피로 지정할 수도 있지만 여기선 % 기호로 어디서든 접속 가능하게 만든다.


3. 권한 설정

mysql> grant all privileges on *.* to 'root'@'%' identified by 'root의 패스워드';

Query OK, 0 rows affected (0.03 sec)


4. 등록확인하기

mysql> select host, user, password from user;


root 계정의 host 필드에 % 가 등록되었는지 확인한다.


5. refrash (모든 변경 사항을 적용시키기)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

여기까지 간단한 과정을 통해서 mysql외부접속이 가능해진다.


외부접속 권한 :

mysql> grant all privileges on ems_db.* to ems@'%' identified by 'ems';

-------------------------------------------------------------------------------------------------------------------------


[ user 추가 ][

Database 선택

mysql> use mysql


User 추가

mysql> insert into user(Host, User, Password)

->values('localhost', 'userName', 'userPassword');


User 권한 database 및 권한 설정

mysql> insert into db

->values ('localhost', 'userDatabase', 'userName', 'y', 'y', 'y', 'y', 'y', 'y',

'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y');

변경 사항 적용

myql> flush privileges;


위의 것을 방법으로 user를 등록 한 후 등록한 user로 로그인을 하려면 ERROR 1045 (28000): Access denied for user 'userName'@'localhost' (using password: YES) 라는 오류 메시지가 뜹니다. 해결하는 방법은 간단합니다.


$ select * from user;

명령어로 등록되어 있는 모든 user를 확인하면, password가 암호화 되지 않은 것을 알 수 있습니다. 아주 사소한 실수...user의 password를 등록할때는 암호화를 해줘야 합니다.


User 추가 부분의 소스를 조금 바꿔보겠습니다.


User 추가

mysql>insert into user(Host, User, Password)

->values('localhost', 'userName', password('userPassword));


이렇게 password를 암호화 해주면 추가 등록한 user가 password로 로그인이 됩니다.



|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||


[coway@localhost ~]$ mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 9

Server version: 5.1.61 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

mysql>

mysql> use mysql

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> insert into user ( Host, User, Password )

-> values ( 'localhost', 'wems', 'wems' );

Query OK, 1 row affected, 3 warnings (0.00 sec)


댓글