MySQL 외부 접속 사용자 추가

웹/웹.리눅스.SQL
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;


사용자 삭제 예
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;

Name
Password
Homepage
Secret