본문 바로가기
정보관리(데이터베이스, DB)/MySQL

계정 접속상태 확인 & 계정 외부주소 접근허용 설정법

by 3604 2023. 8. 1.
728x90

출처: MySQL : 계정 접속상태 확인 & 계정 외.. : 네이버블로그 (naver.com)

MySQL : 계정 접속상태 확인 & 계정 외부주소 접근허용 설정법

 

계정 접속상태 확인 : 

status

 

사용자계정 주소접근허용 설정법 : 

오직 내 PC안에서만

create user geoseong@'localhost' identified by '1234';

현재 해당 계정을 가지고 있는 PC의 IP주소 를 통해서만 접근 허용

create user geoseong@'현재 PC의 IP주소' identified by '1234';

다른 모든 PC에서 접근 허용

create user geoseong@'%' identified by '1234';

 

 계정 접속상태 확인 

 

mysql에 처음 로그인 한 후, 현재 계정 접속상태를 확인해 보자.

현재 접속중인 데이터베이스 계정, 서버 버전, 네트웍, 캐릭터셋TCP포트번호 등을 확인 할 수 있다.

C:\Users\TSPark>mysql -ugeoseong -p1234 geoseong

...

mysql> status;

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

mysql  Ver 14.14 Distrib 5.7.12, for Win64 (x86_64)

 

Connection id:          20

Current database:       geoseong

Current user:           geoseong@localhost

SSL:                    Not in use

Using delimiter:        ;

Server version:         5.7.12-log MySQL Community Server (GPL)

Protocol version:       10

Connection:             localhost via TCP/IP

Server characterset:    utf8

Db     characterset:    utf8

Client characterset:    euckr

Conn.  characterset:    euckr

TCP port:               3306

Uptime:                 6 hours 14 min 28 sec

 

Threads: 1  Questions: 363  Slow queries: 0  Opens: 131  Flush tables: 1  Open t

ables: 124  Queries per second avg: 0.016

 

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

 

 

 사용자계정 주소접근허용 설정법 

 

기존 포스팅에서 생성한 계정은 오직 나의 로컬 작업환경에서만 로그인 할 수 있는 계정이었다면,

이번에는 같은 계정으로 아래의 두 가지 접근방식을 허용시키는 방법을 적용 할 것이다.

같은 계정으로 여러개의 케이스를 만드는 것이기 때문에, 서로 다른 사람들이 CRUD작업 시 각자 따로 놀지 않고 데이터 동기화가 된다는 점이 좋은 듯하다.

1. 계정권한이 있는 PC의 ip주소를 통해서만 접근허용

2. 다른 어떤 PC에서도 해당 PC의 ip주소로 접근 가능

 

Case 1. 계정권한이 있는 PC의 ip주소를 통해서만 접근허용

먼저 새 콘솔(cmd)을 띄워서 'ipconfig' 명령어를 입력한다.

그러면 자신 PC의 IPv4 주소가 나온다.

필자는 현재 유선으로 연결 했으므로 '이더넷 어댑터 로컬 영역 연결' 에 있는 IPv4주소를 확인한다.

이 ip주소를 꼭 기억하자. 

C:\Users\TSPark>ipconfig

...

이더넷 어댑터 로컬 영역 연결:

   IPv4 주소 . . . . . . . . . : 192.168.219.101

...

 

이제 본격적으로 계정을 만드는데, 

기억해두었던 ip주소를 계정 입력부분 @ 뒤에다가 양옆에 따옴표를 붙여서 넣는다.

mysql> create user geoseong@'192.168.219.101' identified by '1234';

Query OK, 0 rows affected (0.00 sec)

 

mysql> GRANT all ON geoseong.* TO 'geoseong'@'192.168.219.101';

Query OK, 0 rows affected (0.00 sec)

 

이제 한번 만들어진 계정으로 들어가서 INSERT를 해보자. 잘된다.

mysql> exit;

Bye

 

C:\Users\TSPark>mysql -ugeoseong -h192.168.219.101 -p1234

...

mysql> use geoseong

Database changed

 

mysql> insert into study(no, sub) values(3, 'hi');

Query OK, 1 row affected (0.01 sec)

 

mysql> select * from study;

+----+------+--------+-----------+-------+

| no | sub  | writer | writedate | count |

+----+------+--------+-----------+-------+

|  2 | NULL | NULL   | NULL      |  NULL |

|  3 | hi   | NULL   | NULL      |  NULL |

+----+------+--------+-----------+-------+

2 rows in set (0.00 sec)

 

한번 status를 입력해서 상태가 어떻게 나오는지 보자.

Current user Connection 부분이 바뀐 것이 눈에 띈다.

mysql> status

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

mysql  Ver 14.14 Distrib 5.7.12, for Win64 (x86_64)

 

Connection id:          28

Current database:       geoseong

Current user:           geoseong@TSPark-PC

SSL:                    Not in use

Using delimiter:        ;

Server version:         5.7.12-log MySQL Community Server (GPL)

Protocol version:       10

Connection:             192.168.219.101 via TCP/IP

Server characterset:    utf8

Db     characterset:    utf8

Client characterset:    euckr

Conn.  characterset:    euckr

TCP port:               3306

Uptime:                 6 hours 47 min 33 sec

 

Threads: 1  Questions: 409  Slow queries: 0  Opens: 147  Flush tables: 1  Open t

ables: 140  Queries per second avg: 0.016

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

 

이번엔 오리지날격인 geoseong@localhost 계정을 들어가서 데이터 동기화가 되어 있는지 확인 해 보자.

잘 동기화 되어있다.

mysql> exit;

Bye

 

C:\Users\TSPark>mysql -ugeoseong -p1234

...

mysql> select * from study;

+----+------+--------+-----------+-------+

| no | sub  | writer | writedate | count |

+----+------+--------+-----------+-------+

|  2 | NULL | NULL   | NULL      |  NULL |

|  3 | hi   | NULL   | NULL      |  NULL |

+----+------+--------+-----------+-------+

2 rows in set (0.00 sec)

 

 

 

Case 2. 다른 어떤 PC에서도 해당 PC의 ip주소로 접근 가능하게 설정하기

이번에는 어느 컴퓨터에서도 해당 MySQL 계정에 접근 가능하게 설정할 것이다.

Case 1 과 만드는 방식은 같으며, 다른 점은 계정 입력부분에 @ 뒤에 오는 % 부분 뿐이다.

mysql> exit;

Bye

 

C:\Users\TSPark>mysql -uroot -p1234

 

mysql> create user geoseong@'%' identified by '1234';

Query OK, 0 rows affected (0.01 sec)

 

mysql> GRANT all ON geoseong.* TO 'geoseong'@'%';

Query OK, 0 rows affected (0.00 sec)

 

mysql 데이터베이스는 user 테이블이 존재하는데,

이 user테이블에는 우리 사용자가 생성한 계정들의 정보가 저장 되어 있다.

컬럼수는 매우 많으니, 우리가 확인하고싶은 USER, HOST 컬럼만 SELECT해서 봐보자.

mysql> use mysql;

Database changed

 

mysql> select host, user from user;

+-----------------+-----------+

| host            | user      |

+-----------------+-----------+

| %               | geoseong  |

| 192.168.219.101 | geoseong  |

| localhost       | geoseong  |

| localhost       | mysql.sys |

| localhost       | root      |

| localhost       | spring4   |

| localhost       | we2admin  |

+-----------------+-----------+

7 rows in set (0.00 sec)

 

geoseong@'%'의 계정이 접속이 잘 되는지 확인하려면,

다른 PC로 접속을 해 보면 된다.

단, 그 PC에 MySQL이 깔려 있어야 하며,

원래 작업중인 PC와 같은 네트웍 범위 안에 있어야 한다.

잘 된다.

 

필자가 갖고 있는 다른 PC는 MySQL 환경설정이 되어있지 않아서 이렇게 일일이 경로 들어가서 접속했다 ㅋ

C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql -ugeoseong -h192.168.219.101 -p1234

...

 

이제 안되는 걸 구경하기 위해서 geoseong@'%' 계정을 지워보자. 흐흐

mysql> drop user geoseong@'%';

Query OK, 0 rows affected (0.00 sec)

 

이제 들어가보면, 실패가 뜬다.

이제 원리를 제대로 안 것 같아용 

C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql -ugeoseong -h192.168.219.101 -p1234

mysql: [Warning] Using a password on the command line interface can be insecure.

 

ERROR 1045 (28000): Access denied for user 'geoseong'@'ABB_Auction-PC' (using password: YES)

 

 
728x90