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('유저패스워드')에서 반드시 작은따옴표를 사용해야함
000.000.000.000 <-- 특정 아이피 접속허용
000.000.000.% <-- 특정 아이피 대역 접속허용으로 변경
을 실행한다.
여기서 주의할 점은 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 root@'%' identified by 'PASSWORD' width grant option;
mysql> flush privileges;
3. MySQL 재실행
$ sudo /etc/init.d/mysql restart
or
$ mysqladmin -u root -p reload
출처 - http://cshong.tistory.com/entry/MySQL-%EC%99%B8%EB%B6%80-%EC%A0%91%EC%86%8D-%ED%97%88%EC%9A%A9
'DB > MySQL' 카테고리의 다른 글
MySQL에서 Create Procedure (0) | 2010.12.21 |
---|---|
리눅스에서 my.cnf 설정 (0) | 2010.12.21 |
MySQL Data Type 과 테이블 설계 방법 (0) | 2010.12.20 |
mysql 사용자 관리 (0) | 2010.12.19 |
mysql 명령어 (0) | 2010.12.19 |