MySQL 외부 접속 사용자 추가 > db

본문 바로가기

db

MySQL 외부 접속 사용자 추가

페이지 정보

작성자 서방님 댓글 0건 조회 20회 작성일 18-10-24 10:34

본문

MySQL 접속
$ mysql -u root -p


root 암호 초기화
mysql> UPDATE user SET password=password('new_password') WHERE user='root';
mysql> FLUSH privileges;


데이터베이스 선택 및 보기
mysql> USE mysql;
mysql> SELECT Host, User, Password FROM user;


사용자 추가
- 서버 주소의 경우 localhost, %, 127.0.0.1 도 같이 처리해 줍니다.
- 외부 접속은 'localhost'  대신에 '%' 를 사용합니다.
mysql> INSERT INTO user (Host, User, Password) VALUES ('localhost', '유저명', password('유저패스워드'));
mysql> INSERT INTO user (Host, User, Password) VALUES ('127.0.0.1', '유저명', password('유저패스워드'));
mysql> INSERT INTO user (Host, User, Password) VALUES ('%', '유저명', password('유저패스워드'));
mysql> FLUSH privileges;

* password('유저패스워드')에서 반드시 작은따옴표를 사용해야함


root 사용자 원격 접속 되도록 수정
mysql>SELECT Host, User, Password FROM user;
+-----------------------+------+-------------------------------------------+
| host                  | user | password                                  |
+-----------------------+------+-------------------------------------------+
| localhost             | root | *514F8A4F9D8BBC49B0FBFA7186DD96C8919E8630 |
| id.server.com      | root |                                           |
| 127.0.0.1             | root |                                           |
| localhost             |      |                                           |
| id.server.com      |      |                                           |
+-----------------------+------+-------------------------------------------+
요렇게 되어 있는 부분중에 127.0.0.1 이 부분의 host를 외부에서 접속할 수있겠금 변경한다.
% <-- 모든 외부접속 허용
000.000.000.000 <-- 특정 아이피 접속허용
000.000.000.%   <-- 특정 아이피 대역 접속허용으로 변경

mysql>update user set host = '원하는 설정값' where user ='root' and host='127.0.0.1';
을 실행한다.
여기서 주의할 점은 root계정중 host에 localhost라는 컬럼역시 있어야 된다는거다.


사용자 삭제 예
mysql> DELETE FROM user WHERE user='root'  and host='%';


데이터베이스 추가 및 권한 주기
- 모든 권한시 데이터베이스명.* 대신 *.* 로 처리합니다.
mysql> CREATE DATABASE 데이터베이스명;
mysql> GRANT ALL privileges ON 데이터베이스명.* TO 유저명@localhost IDENTIFIED BY '유저패스워드';
mysql> GRANT ALL privileges ON 데이터베이스명.* TO 유저명@127.0.0.1 IDENTIFIED BY '유저패스워드';
mysql> GRANT ALL privileges ON 데이터베이스명.* TO 유저명@'%' IDENTIFIED BY '유저패스워드';

이렇게 해서 외부접속이 안되면 insert into 구문 잘못 입력시 % 가 잘못 입력되거나,
패스워드를 유저 패스워드가 아닌 root 패스워드를 입력했을 가능성이 있습니다.
이 경우 % 를 다시 바꿔주면 됩니다.
mysql> UPDATE INTO user SET Host='%' WHERE user='유저명';
mysql> FLUSH privileges;

이렇게 해주면 외부입력 처리가 됩니다.


mysql 테이블 명 변경
rename table 원래 테이블명 to 바꿀테이블명;
alter table 테이블명 rename 바꿀테이블명;

1.원래 있던 테이블을 이름만 바꿔서 새로 만들고 싶을때
create table 새테이블명 select * from 원본테이블명

2.테이블 스키마가 같은 경우 데이터 복사할때
insert into tableA select * from tableB

3.테이블이 다른 곳에 복사
create table tableA.fld as select from tableB.fld
create table project.zipcode as select from exam.zipcode;



※ 외부에서 접속 가능 유무 확인 방법

로컬 컴퓨터에서 telnet localhost 3306 또는
다른 컴퓨터에서 telnet xxx.xxx.xxx.xxx 3306



1. my.cnf 수정

$ sudo vi /etc/mysql/my.cnf

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
# * Fine Tuning

위의 bind-address = 127.0.0.1 부분을 아래처럼 주석처리해 준다.

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address = 127.0.0.1
#
# * Fine Tuning



2. 사용자 등록

MySQL 실행 및 데이터베이스 선택
$ mysql -u root -p
Enter password:

mysql> use mysql
Database changed


user 테이블에 데이터 추가
mysql> insert into user(host, user, password) values('%', 'root', password('PASSWORD'));

- host 필드에 '%' 데이터를 넣는 것은 어디서든 접속할 수 있다라는 뜻이다.
- 특정 자리에서만 접속하도록 하려면 '192.168.1.131' 처럼 IP 또는 해당 자리에서만 접속이 가능하게 하려면 'localhost' 입력.


db 테이블에 데이터 추가
mysql> insert into db(host, dbname, user) values('%', 'MYSITE', 'root');

- 위의 필드를 추가 후 각 필드의 값으 확인해 보면 'N' 값이 들어 있는데 이 값을 'Y'로 수정.

mysql> update db set Select_priv='Y', Insert_priv='Y', Update_priv='Y', Delete_priv='Y'
	, Create_priv='Y', Drop_priv='Y', Grant_priv='Y', References_priv='Y', Index_priv='Y'
	, Alter_priv='Y', Create_tmp_table_priv='Y', Lock_tables_priv='Y', Create_view_priv='Y'
	, Show_view_priv='Y', Create_routine_priv='Y', Alter_routine_priv='Y', Execute_priv='Y'
	where user='root';


사용자에게 모든 권한을 주고 싶을 때 다음과 같이 grant 구문을 사용 할 수도 있다.
mysql> grant all privileges on *.* to [email protected]'%' identified by 'PASSWORD' width grant option;

mysql> flush privileges;



3. MySQL 재실행

$ sudo /etc/init.d/mysql restart

or

$ mysqladmin -u root -p reload

댓글목록

등록된 댓글이 없습니다.

Total 447건 1 페이지
게시물 검색

회원로그인

접속자집계

오늘
215
어제
282
최대
592
전체
37,313

그누보드5
Copyright © seobangnim.com All rights reserved.
자바스크립트를 활성화 하세요![ 브라우저에서 자바스크립트를 활성화하는 방법 ]