'DB/Mysql'에 해당되는 글 3건

  1. 2015.12.17 MySQL Check, Repair, Optimize(개별/전체 테이블 포함)
  2. 2015.12.17 MySQL 접속 호스트 추가
  3. 2015.12.16 mysql 계정 추가





반응형

MySQL 에서는 테이블이 손상 되었는지 여부를 확인(check table)하고, 손상된 테이블이라면 테이블을 복구(repair table)하고, 속도 개선을 위해 테이블을 최적화(optimize table) 하는 기능들을 제공한다. 이 기능들에 대한 쿼리는 상당히 단순하다.



1. MySQL 특정 테이블 체크(check)

DB 콘솔 접속 후

# use [DB명]; => 작업할 DB를 선택

# check table [테이블명]; => 확인할 테이블을 체크



2. MySQL 특정 테이블 복구(repair)

DB 콘솔 접속 후

# use [DB명]; => 작업할 DB를 선택

# repair table [테이블명]; => 복구할 테이블을 복구



3. MySQL 특정 테이블 최적화(optimize)

DB 콘솔 접속 후

# use [DB명]; => 작업할 DB를 선택

# optimize table [테이블명]; => 최적화할 테이블을 최적화



그리고 위와 같이 특정 테이블에 대해 체크, 복구, 최적화를 할 수 있으나, 서버 장애 등으로 인해 DB의 전체 상태를 점검하거나 전체를 최적화하고 싶을 때는 테이블 하나하나 확인을 하기 어렵다. 그럴 때 아래와 같이 특정 DB의 모든 테이블을 체크하고, 복구하고, 최적화 할 수 있다.



4. MySQL 특정 DB의 모든 테이블 체크 및 자동 복구

서버 콘솔에서

# cd [MySQL_HOME]/bin

=> MySQL 설치 홈의 bin 폴더로 이동

# ./mysqlcheck -u [DB계정] -p[패스워드] --auto-repair [DB명]

=> 해당 DB의 모든 테이블을 체크 및 자동복구



5. MySQL 특정 DB의 모든 테이블 최적화

서버 콘솔에서

# cd [MySQL_HOME]/bin

=> MySQL 설치 홈의 bin 폴더로 이동

# ./mysqlcheck -u [DB계정] -p[패스워드] --optimize [DB명]

=> 해당 DB의 모든 테이블을 최적화



 

반응형

'DB > Mysql' 카테고리의 다른 글

MySQL 접속 호스트 추가  (0) 2015.12.17
mysql 계정 추가  (0) 2015.12.16



Posted by 궁극의 java개발자
,





반응형

DB(MySQL)가 설치된 localhost 외의 다른 곳에서 MySQL 접속을 하기 위해서는,

MySQL에서 호스트 및 접속 권한을 미리 설정해야 한다.


예를 들어 '111.222.333.*' 대역대에서 root 계정으로 DB 접속을 할 수 있도록 허용하고,

해당 사용자에게 모든 권한을 부여하기 위해서는 아래와 같이 DB 콘솔에서 실행하면 된다.



# INSERT INTO mysql.user (host, user, password) VALUES ('111.222.333.%', 'root', password('비밀번호'));

# GRANT ALL PRIVILEGES ON *.* TO 'root'@'111.222.333.%';

# FLUSH PRIVILEGES;

 

반응형

'DB > Mysql' 카테고리의 다른 글

MySQL Check, Repair, Optimize(개별/전체 테이블 포함)  (0) 2015.12.17
mysql 계정 추가  (0) 2015.12.16



Posted by 궁극의 java개발자
,

mysql 계정 추가

DB/Mysql 2015. 12. 16. 14:09





반응형

서버 관리를 하다보면 mysql 사용자 계정을 추가해 줄때가 있다
 
 
 
./mysqladmin -V  버젼명 (테이터베이스 관리 tool)
./mysqladmin -p status 현재상태


 
 
 데이터베이스 종류 보기
   mysql> show databases;
 
 
 
mysql 상의 테이블 정보 보기
   mysql> show tables from mysql;
 
 
 
데이터 베이스 생성
 

mysql> CREATE DATABASE testDB;
 

편집후에 반드시 mysql 재가동해야함.
   # mysqladmin -u root -p reload
 
 
 
첫번째 방법은 아주 간단하다 한번에 끝낼수 있다.
 
GRANT ALL PRIVILEGES ON [DB명].[테이블명(*)] TO [유저명]@[서버명] IDENTIFIED BY '[암호]' WITH GRANT OPTION;
 
"WITH GRANT OPTION" 옵션은 다른 유저에게 권한 부여 여부다.
 
 
 
두번째 방법은 세밀하게 권한을 부여할 수 있는 방법이다. 일단 유저를 먼저 생성을 한다.
 
GRANT ALL PRIVILEGES ON [DB명].[테이블명(*)] TO [유저명]@[서버명] IDENTIFIED BY '[암호]' ;
 
 
 
유저를 생성후 권한을 한번에 줄수있다.
 
GRANT ALL ON [DB명].[테이블명(*)] TO [유저명]@[서버명];
 
 
 
특정 권한만 선택적으로 적용할 수 있다.
 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALERT ON [DB명].[테이블명(*)] TO [유저명]@[서버명];
 
 
 
마지막으로 계정 권한을 새로 로드시켜 준다.
 
FLUSH PRIVILEGES;
 
 
 
권한 삭제는 GRANT 명령어 반대로 하면 된다.
 
REVOKE ALL ON [DB명].[테이블명(*)] TO [유저명]@[서버명];
 
 
 
특정 권한만 삭제할 수 있다.
 
REVOKE SELECT ON [DB명].[테이블명(*)] TO [유저명]@[서버명];
 
 
 
권한만 삭제한다고 유저가 삭제되진 않는다. 아래와 같이 해줘야 완벽하게 유저가 제거된다.
 
DROP USER [유저명]@[서버명];
 
 
 
 
 
mysql이 외부로도 서비스가 가능하게 하려면,
 
몇 가지의 확인사항과 그 외에 추가적인 설정을 해야 할 필요가 있습니다.
 
 
 
mysql이 설치된 서버의 운영체제를 명시해주시지 않아서,
 
유닉스 계열 운영체제라 가정하고 설명드리겠습니다.
 
 
 
#1.
 
우선, 기본적으로 mysql 은 tcp 3306 번 포트를 통해 서비스를 제공합니다.
 
따라서, 외부에서 DB에 접근할 수 있도록 하기 위해서는
 
서버의 tcp 3306 번 포트가 방화벽에 막혀 있지는 않은지 확인해야 하며
 
만약 막혀 있을 경우 열어주어야 합니다.
 
 
 
iptables -L 명령으로 차단/허용 리스트 조회가 가능합니다. 만약 포트가 막혀 있을 경우,
 
 
 
# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
 
 
 
명령으로 열어주시면 됩니다.
 
 
 
 
 
#2.
 
그 다음에는 DB 사용자 계정에 외부에서의 접근 권한을 부여해야 합니다.
 
외부에서 DB에 접근할때만 사용하는 계정을 새로 생성해도 됩니다.
 
'%' 의 의미는 외부에서의 접근을 허용한다는 의미입니다.
 
기존에 사용하던 계정에 외부 접근 권한을 부여하려면, Host를 '%' 로 하여 똑같은 계정을 추가해줍니다.
 
 
 
mysql> USE mysql;
 
mysql> INSERT INTO user (Host, User, Password) VALUES ('localhost', '계정아이디', password('비밀번호'));
mysql> INSERT INTO user (Host, User, Password) VALUES ('%', '계정아이디', password('비밀번호'));
mysql> FLUSH privileges;

 
계정이 생성되었다면, 그 계정이 접근할 수 있는 데이터베이스를 생성하고 권한을 부여해야 합니다.
 
 
 
mysql> CREATE DATABASE 데이터베이스명;
mysql> GRANT ALL privileges ON 데이터베이스명.* TO 계정아이디@locahost IDENTIFIED BY '비밀번호';
mysql> GRANT ALL privileges ON 데이터베이스명.* TO 계정아이디@'%' IDENTIFIED BY '비밀번호';

 
 
 
이렇게 방화벽을 열고, 계정에 접근 권한을 부여하는 과정을 거치면
 
외부로 DB 서비스를  제공할 수 있게 됩니다.
 
 
 
도움이 되셨기를 바랍니다.

 

반응형

'DB > Mysql' 카테고리의 다른 글

MySQL Check, Repair, Optimize(개별/전체 테이블 포함)  (0) 2015.12.17
MySQL 접속 호스트 추가  (0) 2015.12.17



Posted by 궁극의 java개발자
,