'리눅스/mysql'에 해당되는 글 14건

  1. 2015.05.16 mysql ip 설정
  2. 2015.04.06 mysql 테이블 복구
  3. 2015.04.06 mysql 기본 명령
  4. 2015.04.03 mysql 캐릭터셋

mysql ip 설정

리눅스/mysql 2015. 5. 16. 03:59

모든 IP 허용

INSERT INTO mysql.user (host,user,password) VALUES ('%','root',password('패스워드'));

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

FLUSH PRIVILEGES;


IP 대역 허용

다음과 같이 설정하면 111.222로 시작하는 모든 IP가 허용된다.

INSERT INTO mysql.user (host,user,password) VALUES ('111.222.%','root',password('패스워드'));

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

FLUSH PRIVILEGES;


특정 IP 1개 허용

INSERT INTO mysql.user (host,user,password) VALUES ('111.222.33.44','root',password('패스워드'));

GRANT ALL PRIVILEGES ON *.* TO 'root'@'111.222.33.44';

FLUSH PRIVILEGES;


원복

모든 IP를 허용한 경우 다음과 같이 원래 상태로 복구할 수 있다.

DELETE FROM mysql.user WHERE Host='%' AND User='root';

FLUSH PRIVILEGES;



출처 : http://zetawiki.com/wiki/MySQL%EC%97%90_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9

'리눅스 > mysql' 카테고리의 다른 글

mysql 실행 에러  (0) 2015.06.08
mysql 실행 오류  (0) 2015.05.30
mysql 테이블 복구  (0) 2015.04.06
mysql 기본 명령  (0) 2015.04.06
mysql 캐릭터셋  (0) 2015.04.03
Posted by Narusika
,


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의 모든 테이블을 최적화


출처:http://nota.tistory.com/74

'리눅스 > mysql' 카테고리의 다른 글

mysql 실행 에러  (0) 2015.06.08
mysql 실행 오류  (0) 2015.05.30
mysql ip 설정  (0) 2015.05.16
mysql 기본 명령  (0) 2015.04.06
mysql 캐릭터셋  (0) 2015.04.03
Posted by Narusika
,


데이터베이스 접속

$ mysql -u 사용자명 -p dbname


설치 직후에는 root 사용자에 비밀번호가 없으므로 다음과 같이 접속하여 MySQL을 관리할 수 있다.


$ mysql -u root mysql



비밀번호 변경

MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않다.

다음 세가지 방법으로 비밀번호를 변경 할 수 있다.


mysqladmin이용

$ mysqladmin -u root password 새비밀번호


update문 이용

$ mysql -u root mysql


mysql> UPDATE user SET password=password('새비밀번호') WHERE user='root';

mysql> FLUSH PRIVILEGES;



Set Password 이용

SET PASSWORD FOR root=password('새비밀번호');



일단 root 비밀번호가 설정된 상태에서는 mysql이나 mysqladmin 명령을 실행할 때 -p 옵션을 붙여주고 기존 비밀번호를 입력해야만 한다.




사용자 조회

mysql> select host, user, password from user;


사용자 추가/삭제

mysql> GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'password';


username 이라는 사용자를 password라는 비밀번호를 갖도록 하여 추가한다. username은 dbname이라는

데이타베이스에 대해 모든 권한을 가지고 있다.

username 사용자는 로칼 호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면

GRANT ALL PRIVILEGES ON dbname.* TO username@'%' IDENTIFIED BY 'password';


위를 또한 번 실행한다. '%'에서 홑따옴표를 주의한다.

추가 : '%'를 호스트네임으로 지정해도 모든 호스트에서 접속할 수 없었다. 각 호스트별로 다 지정해야 했다.

아래 댓글에서 rukikuki님이 알려주셨습니다.

GRANT ALL PRIVILEGES ON testdb.* TO 'username'@'%' IDENTIFIED BY 'password' ;

처럼 'username' 이런식으로 홑따옴표를 username 에도 붙여야 하더군요.. 


http://tech.zhenhua.info/2009/01/mysql-error-104528000-access-denied-for.html 에 따르면 '%'란 localhost 를 제외한 모든 호스트를 뜻한다고 한다. 즉, localhost에 대해서는 명시적으로 따로 권한을 지정해야 한다.


불필요한 사용자 삭제는

mysql> DLETE FROM user WHERE user='username';

mysql> FLUSH PRIVILEGES;





데이터베이스 생성/보기


데이터베이스를 생성하고,

mysql> CREATE DATABASE dbname;


현재 존재하는 데이터베이스 목록을 보여준다.

mysql> SHOW DATABASES;


특정 데이타베이스를 사용하겠다고 선언한다.

mysql> USE dbname;


쓸모 없으면 과감히 삭제한다.

mysql> DROP DATABASE [IF EXISTS] dbname;


IF EXISTS 옵션은 비록 데이타베이스가 없더라도 오류를 발생시키지 말라는 의미이다.




테이블 생성/보기


테이블을 생성하고,

mysql> CREATE TABLE tablename (

column_name1 INT,

column_name2 VARCHAR(15),

column_name3 INT );


현재 데이타베이스의 테이블 목록을 보고

mysql> SHOW TABLES;


테이블 구조를 살펴본다.

mysql> EXPLAIN tablesname;

혹은

mysql> DESCRIBE tablename;


이름을 잘못 지정했으면 이름을 변경할 수도 있다.

mysql> RENAME TABLE tablename1 TO tablename2[, tablename3 TO tablename4];


필요 없으면 삭제한다.

mysql> DROP TABLE [IF EXISTS] tablename;




현재 상태 보기


mysql> status


--------------

mysql Ver 11.18 Distrib 3.23.58, for pc-linux (i686)


Connection id: 26

Current database: study

Current user: study@localhost

Current pager: stdout

Using outfile: ''

Server version: 3.23.58

Protocol version: 10

Connection: Localhost via UNIX socket

Client characterset: latin1

Server characterset: euc_kr

UNIX socket: /var/lib/mysql/mysql.sock

Uptime: 2 hours 9 min 59 sec


Threads: 1 Questions: 160 Slow queries: 0 Opens: 28 Flush tables: 1

Open tables: 1 Queries per second avg: 0.021

--------------




INSERT

mysql> INSERT INTO tablename VALUES(값1, 값2, ...);


혹은


mysql> INSERT INTO tablename (col1, col2, ...) VALUES(값1, 값2, ...);



SELECT

mysql> SELECT col1, col2, ... FROM tablename;


컬럼명을 *로 하면 모든 컬럼 의미.


mysql> SELECT col1 AS '성명', col2 AS '국어점수' FROM grade;


컬럼의 이름을 바꿔서 출력.


mysql> SELECT * FROM tablename ORDER BY col1 DESC;

mysql> SELECT col1, korean + math english AS '총점' FROM tablename ORDER BY '총점' ASC;


DESC는 내림차순 ASC는 오름차순.


mysql> SELECT * FROM grade WHERE korean < 90;


조건줘서 SELECT.


mysql> SELECT * FROM grade LIMIT 10;


결과중 처음부터 10개만 가져오기


mysql> SELECT * FROM grade LIMIT 100, 10;


결과중 100번째부터 10개만 가져오기. 첫번째 레코드는 0번 부터 시작한다.


UPDATE

mysql> UPDATE tablename SET col1=새값 WEHER 조건



DELETE

mysql> DELETE FROM tablename WEHRE 조건



mysql에서 쿼리 결과 세로로 보기

-E 옵션을 줘서 실행한다.

$ mysql -E -u root -p mysql



mysql에서 발생한 오류나 경고 다시 보기

mysql> show errors;

mysql> show warnings;




'리눅스 > mysql' 카테고리의 다른 글

mysql 실행 에러  (0) 2015.06.08
mysql 실행 오류  (0) 2015.05.30
mysql ip 설정  (0) 2015.05.16
mysql 테이블 복구  (0) 2015.04.06
mysql 캐릭터셋  (0) 2015.04.03
Posted by Narusika
,

출처 http://develop.sunshiny.co.kr/385



# 현재 캐릭터셋 검색
mysql>show variables like 'char%';

+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | latin1                           |
| character_set_connection | latin1                           |
| character_set_database   | latin1                            |
| character_set_filesystem | binary                           |
| character_set_results    | latin1                           |
| character_set_server     | latin1                            |
| character_set_system     | utf8                             |
| character_sets_dir       | /opt/mysql/mysql/share/charsets/ |
+--------------------------+----------------------------------+


mysql>status 또는 \s
--------------
mysql  Ver 14.14 Distrib 5.1.42, for pc-solaris2.10 (i386) using readline 5.1

Connection id:          1
Current database:       
Current user:           계정명@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.42 명ySQL Community Server (GPL)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:            /tmp/mysql.sock
Uptime:                 12 sec

Threads: 1  Questions: 6  Slow queries: 0  Opens: 15  Flush tables: 1  Open tables: 8  Queries per second avg: 0.500
--------------


# 데이타 베이스 생성 : utf8 타입
CREATE DATABASE 데이터베이스명 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

# 데이타 베이스 생성 : euckr 타입
CREATE DATABASE 데이터베이스명 DEFAULT CHARACTER SET euckr COLLATE euckr_korean_ci;

# 데이타 베이스 생성후 외부 접속하기 위해서 IP를 추가 해줍니다.
GRANT ALL PRIVILEGES ON 데이타베이스명.* TO '계정명'@'192.168.1.100' IDENTIFIED BY '비밀번호' WITH GRANT OPTION;


## 각각의 캐릭터 셋을 변경 - 이 변경 방법은 mysql 데몬이 재실행 될경우에 초기화 됨.
mysql> SET character_set_client = utf8;
mysql> SET character_set_results = utf8;
mysql> SET character_set_connection = utf8;
mysql> ALTER DATABASE DB명 DEFAULT CHARACTER SET utf8;
commit;


## /etc/my.cnf 파일에 설정 - 이 설정 방법을 추천 mysql 데몬이 재실행 되어도 설정을 유지 합니다.

mysql>vi /etc/my.cnf

################# utf8 설정 #################
[client]
#password       = your_password
port            = 3306
socket          = /tmp/mysql.sock

default-character-set=utf8

[mysqld]
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci

port            = 3306
socket          = /tmp/mysql.sock
basedir       = /opt/mysql/mysql
datadir        = /opt/mysql/mysql/data

set-variable    = table_cache=1024
set-variable    = max_connections=500
set-variable    = max_user_connections=100
set-variable    = max_connect_errors=10000

log-slow-queries
set-variable    = long_query_time=3
skip-name-resolve

# InnoDB 사용 안할시 아래 내용추가
#skip-innodb
sync_binlog = 1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
default-character-set=utf8

################# utf8 설정후 확인 #################

mysql> \s   
--------------
mysql  Ver 14.14 Distrib 5.1.42, for pc-solaris2.10 (i386) using readline 5.1

Connection id:          4
Current database:       
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.42-log MySQL Community Server (GPL)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /tmp/mysql.sock
Uptime:                 19 min 31 sec

Threads: 2  Questions: 33  Slow queries: 1  Opens: 15  Flush tables: 1  Open tables: 8  Queries per second avg: 0.28


mysql> show variables like 'char%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /opt/mysql/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.99 sec)


################# euckr 설정 #################

[client]
default-character-set=euckr

[mysqld]
default-character-set=euckr
init_connect=SET collation_connection=euckr_korean_ci
init_connect=SET NAMES euckr
character-set-server=euckr
collation-server=euckr_korean_ci

port            = 3306
socket          = /tmp/mysql.sock
basedir       = /opt/mysql/mysql
datadir        = /opt/mysql/mysql/data

set-variable    = table_cache=1024
set-variable    = max_connections=500
set-variable    = max_user_connections=100
set-variable    = max_connect_errors=10000

log-slow-queries
set-variable    = long_query_time=3
skip-name-resolve

# InnoDB 사용 안할시 아래 내용추가
#skip-innodb
sync_binlog = 1

[mysqldump]
default-character-set=euckr

[mysql]
default-character-set=euckr 


'리눅스 > mysql' 카테고리의 다른 글

mysql 실행 에러  (0) 2015.06.08
mysql 실행 오류  (0) 2015.05.30
mysql ip 설정  (0) 2015.05.16
mysql 테이블 복구  (0) 2015.04.06
mysql 기본 명령  (0) 2015.04.06
Posted by Narusika
,