컴퓨터잡담

mysql 재시작, 사용자 추가 명령어

by 디케 posted Nov 19, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

mysql 재시작, 사용자 추가 명령어


mysql 재시작 명령어


MYSQL 종료 명령어 
#mysqladmin -u root -p shutdown 한다음에 
#mysql-dir/bin/safe_mysqld 
  
 MYSQL 재시작 명령어 
#mysql-dir/bin/safe_mysqld & 


굳이 mysql 종료 후 재시작을 기본으로 하는 이유는 db 재시작시에 쿼리전송이 일어날 수 있어

기록 못하는 일을 방지하고자 종료 후 다시시작하는 것을 원칙으로 합니다.



MySQL 초기화 스크립트(http://gooranet.tistory.com/79)


1. Test Table 데이터 및 Account 삭제, root 패스워드 변경

DROP DATABASE IF EXISTS test;
USE mysql;
DELETE FROM db WHERE db LIKE 'test%';
DELETE FROM user WHERE host = '%';
DELETE FROM user WHERE User = '';
UPDATE user SET Password = PASSWORD('패스워드'WHERE User = 'root';
FLUSH PRIVILEGES;


2. Database, User(select 전용, insert/update/delete 전용) 추가

CREATE DATABASE 디비명;
GRANT select ON 디비명.* TO 셀렉트용아이디@"호트스명" IDENTIFIED BY "패스워드"
;
GRANT insert,update,delete ON 디비명.* TO 업데이트/인서트용아이디@"호스트명" IDENTIFIED BY "패스워드"
;
FLUSH PRIVILEGES;


3. Schema 수정 using ALTER

ALTER TABLE 테이블명 ADD 추가할 내용(컬럼, 키, 인덱스 등)
Ex) ALTER TABLE table1 ADD column1 CHAR(5) AFTER column2
;

ALTER TABLE 테이블명 MODIFY 수정할 내용;
Ex1) ALTER TABLE table1 MODIFY (column1 INT(8) NULL);
Ex2) ALTER TABLE table1 RENAME AS table2;
Ex3) ALTER TABLE table2 CHANGE old old TINYINT NOT NULL, CHANGE old new CHAR(20);

ALTER TABLE 테이블명 DROP PRIMARYKEY;
ALTER TABLE 테이블명 DROP COLUMN 지울 컬럼명;




mysql autoincrement초기화 방법
alter table 테이블명 auto_increment = 1



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;


Articles