출처: 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)
'정보관리(데이터베이스, DB) > MySQL' 카테고리의 다른 글
VirtualBox + Ubuntu + MySQL 설치 하기 (0) | 2023.08.01 |
---|---|
[MySQL] [08S01] Communications link failure (0) | 2023.08.01 |
[Virtualbox] 버추얼박스에 설치한 MySQL 접속하기 (0) | 2023.08.01 |
mysql 원격접속하는 방법 (0) | 2023.08.01 |
docker를 사용해서 mysql 기동하는 방법 공유 (0) | 2023.08.01 |