반응형

[원본] http://randa.tistory.com/

MySQL에서 비교연산자는 1(TRUE), 0(FALSE), NULL값 또는 연산에 대한 결과를 리턴한다. 이 포스팅에서는 비교연산자의 설명 및 예제를 설명하도록 한다.



1. BETWEEN min AND max

해당 연산자는 AND 좌우의 값을 포함한 범위안에 값이 있는지를 체크한다. 이는 수식으로 "expr >= ... AND expr <= ..." 동일한 결과를 나타낸다.

1
2
3
4
5
SELECT 2 BETWEEN 1 AND 3, 2 BETWEEN 3 and 1;
SELECT 1 BETWEEN 2 AND 3;
SELECT 'b' BETWEEN 'a' AND 'c';
SELECT 2 BETWEEN 2 AND '3';
SELECT 2 BETWEEN 2 AND 'x-3';

1line - BETWEEN은 반드시 범위 값 중 작은게 왼쪽 큰게 오른쪽에 있어야 한다. 따라서 2는 1~3범위 안에 있음으로 

    2 BETWEEN 1 AND 3은 1을 리턴하고, 2 BETWEEN 3 and 1은 비교대상 중 우측이 더 작음으로 0을 리턴한다.

2line - 1은 2~3 범위안에 없기 때문에 0을 리턴한다.

3line - a~c중에는 b가 있기때문에 1이 리턴된다. BETWEEN은 숫자 뿐만 아니라 문자도 비교 가능한 것을 알 수 있다.

4line - 범위 중 3을 '' 로 묶어 문자열로 치환하였으나, 숫자만이 존재 할 경우 내부적으로 숫자로 취급한다. 따라서 2~3중에는 

          2가 포함되어 있기에 1을 리턴한다.

5line - 숫자와 문자열의 범위를 주었다. 이 경우 정상적으로 값을 취할 수 없기 때문에 0을 리턴한다. 5line의 예제는 비교연산

          을 위해서는 동일한 형태의 데이터 타입끼리 비교를 해야 정상적인 결과를 줌을 알 수 있다.



2. COALESCE(value1,value2 ...)

COALESCE는 범위안에 값 중 NULL이 아닌 첫번째 인수를 리턴한다. 만약 모든 값 이 NULL일 경우는 NULL을 리턴한다.

1
2
SELECT COALESCE(NULL,1,2,3);
SELECT COALESCE(NULL,NULL,NULL);

1line - 좌측부터 시작해서 첫번째로 NULL이 아닌 것은 1이기 때문에 1을 리턴한다.

2line - value 값이 전부 NULL로만 이루어져 있기 때문에 NULL을 리턴한다.



3. GREATEST(value1,value2 ...)

GREATEST는 범위안에 값 중 가장 큰 인수를 리턴한다.

1
2
3
4
SELECT GREATEST(2,0);
SELECT GREATEST(34.0,3,5.0,767.99);
SELECT GREATEST('B','A','C');
SELECT GREATEST(NULL,'B','C');

1line - 2, 0중 가장 큰 수인 2를 리턴한다.

2line - 가장 큰 수치인 767.99를 리턴한다.

3line - a, b, c중 가장 뒤인 c를 리턴한다.

4line - 값 중 NULL이 포함될 경우 NULL을 리턴한다.



4. expr [NOT] IN (value1,value2 ...)

IN 구문은 expr에 해당하는 값이 ( ) 안에 존재할 경우 1(TRUE)을 리턴한다. NOT이 붙을 경우 반대로 해당하는 값이 없어야 1을 리턴한다.

1
2
3
4
SELECT 2 IN (0,3,5,7);
SELECT 'wefwf' IN ('wee','wefwf','weg');
SELECT 2 NOT IN (0,3,5,7);
SELECT 'wefwf' NOT IN ('wee','wefwf','weg');

1line - 0, 3, 5, 7 중 2가 존재하지 않기때문에 0을 리턴한다.

2line - 'wefwf'는 ( ) 안에 존재하기 때문에 1을 리턴한다.

3line - 1line 결과와 반대로 1을 리턴한다.

4line - 2line 결과와 반대로 0을 리턴한다.


IN절안에는 서로 다른 데이터 타입을 쓰지않는 것이 좋다. 이는 MySQL 내부적으로 비교하는 기준이 다를 수 있기 때문이다. 따라서 만약 숫자와 문자열을 혼합한다면 

1
SELECT val1 FROM tbl1 WHERE val1 IN (1,2,'a');

위와 같이 사용하는 대신 아래와 같이 써야 한다.

1
SELECT val1 FROM tbl1 WHERE val1 IN ('1','2','a');


IN절에서 ( ) 안의 값은 MySQL 환경변수 중 max_allow_packet에 영향을 받는다. IN절 안의 목록을 마음껏 늘려도 되지만 DB에서 설정 한 max_allow_packet 값을 초과할 수 는 없다.(사실 해당 값을 초과할 정도로 SQL을 작성할 경우는 극히 드물고 매우 비효율 적일 것이다. 그정도라면 JOIN이 더 효율적일 것임으로.)


5. INTERVAL(N,N1,N2,N3,...)

INTERVAL은 값 N과 그 뒤의 값을 비교하여 결과를 리턴한다. 최소 1개 이상의 N(num) 값이 있어야 한다.


 * N < N1 일 경우 뒤 N과 관계없이 무조건 0을 리턴한다.

 * N1 < N2 < N3 ... 와 같이 N(num)은 뒤로갈 수록 값이 커야 한다. 내부적으로 Binary 형태로 결과를 구하기 때문이 고 만약 

   그렇지 않을 경우 원하는 결과가 나오지 않을 수 있다.

 * N이 NULL 일 경우는 -1을 리턴한다.

 * N > N(num)이 될때까지의 N(num)에 대한 개수를 구한다. 왼쪽부터 읽는다.


1
2
3
4
5
SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);
SELECT INTERVAL(10, 1, 10, 100, 1000);
SELECT INTERVAL(22, 23, 30, 44, 200);
SELECT INTERVAL(NULL, 3, 5, 7, 9);
SELECT INTERVAL(100, 1, 10, 100, 10, 1000, 10);

1line - N(23)보다 큰 N(num)은 30이다. 그럼 그 사이의 1, 15, 17의 개수 3. 따라서 3을 리턴한다.

2line - N(10)보다 큰 N(num)은 100이다. INTERVAL에서 >= 는 조건에 포함되지 않는다. 따라서 1, 10 2개. 2를 리턴한다.

3line - N(22) < N1(23)이다. 따라서 0을 리턴한다.

4line - N이 NULL값이기 때문에 -1을 리턴한다.

5line - N(100)보다 큰 N(num)은 1, 10, 100, 10 이 있다. N < N(num)이 만족한 1000에서 종료되기 때문에 뒤에 10은 무시된다. 

          따라서 4를 리턴한다.



6. IS [NOT] NULL

값이 NULL인가를 비교하여 값을 리턴한다. IS NULL의 경우 NULL인 경우 1 NULL이 아닌경우 0을 리턴한다. 반대로 NOT이 붙으면 부정의 의미가 되어 NULL이 아닌경우 1, NULL인 경우 1을 리턴한다.

1
2
SELECT 1 IS NULL, '' IS NULL, NULL IS NULL;
SELECT 1 IS NOT NULL, '' IS NOT NULL, NULL IS NOT NULL;

1line - NULL(공백은 NULL이 아니다)은 NULL로 명시할 경우에만 존재함으로 0 / 0 / 1을 리턴한다.

2line - NULL(공백은 NULL이 아니다)인 경우에만 0을 리턴함으로 1 / 1 / 0을 리턴한다.



7.  IS [NOT] boolean_value

불리안 값에 대응해서 값을 테스트 하는데, 여기에서 boolean_value 은 TRUE, FALSE, or UNKNOWN이   있다

IS NOT boolean_value 신텍스는 MySQL 5.0.2에서 추가 되었다.

1
2
SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;
SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;

1line - 1, 0, NULL은 각각 TRUE/FALSE/UNKNOWN과 대응됨으로 전부 1을 리턴한다.

2line - 1, 0은 각각 TRUE/FALSE에 대응함으로 참이다. NULL은 UNKNOWN인데 NOT을 붙여 부정했기에 거짓이 된다. 따라서 

          1/1/0을 리턴한다.



8. ISNULL(expr)

IS NULL과 비슷한 역활을 한다. expr에 대한 결과가 NULL인지 아닌가에 대하여 확인하여 NULL일 경우 1, 아닐경우 0을 리턴한다.

1
2
SELECT ISNULL(1+1);
SELECT ISNULL(1/0);

1line - 1+1의 결과는 2다. NULL이 아님으로 0을 리턴한다.

2line - 1을 0으로 나눈다는 것은 불가능하기 때문에 NULL이다. 따라서 1을 리턴한다.



9. LEAST(value1,value2,...)

LEAST는 값 중 가장 작은 인수를 리턴한다. 인수들은 아래의 규칙에 따라서 비교가 된다


 * 만일 리턴 값이 INTEGER 문맥에서 사용되거나 또는 모든 인수가 정수 값이라면, 그 인수들은 정수로 비교가 된다.

 * 만일 리턴 값이 REAL 문맥에서 사용되거나 또는 모든 인수가 실수 값 (real value)이라면, 인수들은 실수(real)로 비교된다.

 * 만일 어떤 인수가 문자 크기에 민감한 스트링이라면, 그 인수는 문자 크기를 구분하는 스트링으로 비교가 된다.

 * 이외의 모든 경우에는, 인수들은 문자 크기와는 상관없는 스트링으로 비교가 된다.


MySQL 5.0.13 이전의 경우, LEAST() 은 모든 인수가 NULL 일 경우에만 NULL을 리턴했다. 하지만 5.0.13 이후에는, 어떤 인수라도 NULL 포함되어 있다면 NULL을 리턴한다.

1
2
3
SELECT LEAST(2,0);
SELECT LEAST(34.0,3.0,5.0,767.0);
SELECT LEAST('B','A','C');

1line - 0이 가장 작음으로 0을 리턴한다.

2line - 3.0이 가장 작음으로 3.0을 리턴한다.

3line - A가 가장 앞선 문자열임으로 A를 리턴한다.



10. value1 value2

양쪽의 값을 경우 1 틀릴경우 0을 리턴한다. 단 하나의 값이라도 NULL이 포함되어지면 결과는 NULL을 리턴하게된다.

1
2
3
SELECT 1 = 0;
SELECT '0' = 0;
SELECT NULL = 0;

1line - 1은 0이 아님으로 0을 리턴한다.

2line - 0은 0임으로 1을 리턴한다

3line - NULL이 포함되었음으로 NULL을 리턴한다.



11. value1 <=> value2

<=>는 같은 값을 비교하는 =과 내용은 근본적으로 동일하다. 하지만 차이점은 NULL 하나의 값도 값으로 표시한다는게 다르다.

1
2
SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
SELECT 1 = 1, NULL = NULL, 1 = NULL;

1line - 1, 1, 0. NULL 값도 하나의 문자로 취급 하기 때문에 NULL을 리턴하지 않는다.

2line - 1, NULL, NULL. 하나라도 비교 대상에 NULL이 포함되면 연산불가로 판정하고 NULL 값을 리턴한다.



12. value1 <> value2, 또는 value1 != value2

=와 반대이다. 일치하지 않을 경우 1을 리턴한다.

1
2
3
SELECT '.01' <> '0.01';
SELECT .01 <> '0.01';
SELECT 'zapp' <> 'zappp';

1line - .01은 0.01과 같음으로 0을 리턴할 것 같지만 둘다 ' 으로 묶어 문자형 만들었다. 따라서 문자 그대로 비교하여 틀림으로 

           값은 1

2line - .01은 0.01과 같음으로 0을 리턴한다. 숫자의 경우 ' 으로 묶지 않으면 앞의 값이 생략된 경우 0을 추가한다. 

3line - zapp와 zappp는 다름으로 1을 리턴한다.



13. value1 > value2

값 1이 값 2보다 클 경우 1을 리턴한다.

1
SELECT 2 > 1;

1line - 2가 1보다 큼으로 1을 리턴한다.



14. value1 >= value2

값 1이 값 2보다 크거나 같을 경우 1을 리턴한다. >=의 순서 바꾸면 안된다.

1
SELECT 2 >= 2

1line - 2보다 크거나 같을 경우에 참인데 2와 2는 같음으로 1을 리턴한다.



15. value1 < value2

값 1이 값 2보다 작을 경우 1을 리턴한다.

1
SELECT 2 < 1;

1line - 2는 1보다 작음으로 1을 리턴한다.



12. value1 <= value2

값 1이 값 2보다 작거나 같을 경우 1을 리턴한다. <=의 순서 바꾸면 안된다.

1
SELECT 2 <= 2;

1line - 2보다 작거나 같을 경우에 참인데 2와 2는 같음으로 1을 리턴한다.

반응형
반응형

[원본] http://blog.syszone.co.kr/3333

때로 MySQL 5.1 데이터베이스는 몇가지 관리 작업을 수행해야 한다. 내 경우를 예로 들면, 운영서버에서 겨우 400k 행을 가진 두 개의 테이블을 조인하는 간단한 쿼리문을 실행하는데 너무 오래 걸리는 경우가 있었다. 실제로 이 쿼리문이 실행되는데 약 30초에서 100초 가량이 걸렸다. 테스트와 검수작업 후에 58ms로 처리 시간을 줄였다. 쿼리문의 컬럼은 이미 인덱스가 생성되어 있었기 때문이다. 이 정도 처리속도라면 다행히도 사용자들이 불편해 하는 정도는 아니였지만, 나는 이정도 처리 속도도 괜히 성가시게 느껴졌다. 해결책은 간단했는데, 몇가지 명령문을 실행해서 정리 작업을 하면 되었기 때문이다. 이 정리작업을 하고 나니, 동일한 쿼리문을 운영서버에서 실행하는데 겨우 4.8ms 밖에 걸리지 않게 되었다. 정말이지 만족스러운 결과였다.

내가 한 일들

  • Backup - 데이터베이스 백업하기
  • Check - 데이터베이스 체크하기
  • Optimize - 데이터베이스 최적화하기
  • Analyze - 데이터베이스 분석하기

mysqldump -u root -p --create-options --routines --triggers dbname > ./db.dmp

# note these cause LOCKS, so be careful on your production server!

$ mysqlcheck -u root -p --check --databases dbname

$ mysqlcheck -u root -p --optimize --databases dbname

$ mysqlcheck -u root -p --analyze --databases dbname


각 수행 단계들에 대한 상세 설명

1. 먼저 mysqldump 명령문을 이용해서 데이터베이스를 백업한다.

프로시져 또는 함수가 있다면 반드시 -routines 인자를 사용해야 한다. 또한 트리거를 사용한다면 반드시 -triggers 인자를 사용해야 한다.


$ mysqldump -u root -p --create-options --routines --triggers dbname > ./db.dmp

# copy to another server

$ scp ./db.dmp user@somehost:~/

여기에 더해서 다른 시스템에서 백업한 데이터베이스를 실제로 재생성하여 백업이 정확한지 확인해야 한다.

만약 데이터베이스가 너무 커다면 이처럼 데이터베이스 전체를 백업하는 일은 사실 불가능하다. 하지만 데이터베이스가 너무 크다면, 이미 복제 서버를 구축해서 백업 시스템을 활용중일 것이다.

2 Check


테이블 무결성을 검사한다.

http://dev.mysql.com/doc/refman/5.1/en/check-table.html

단일 테이블에 대해 검사를 하려면:

mysql> CHECK TABLE {table name};

콘솔에서 데이터베이스의 전체 테이블을 검사하려면 :

$ mysqlcheck -u root -p --check --databases dbname

테이블 무결성 검사는 정기적으로 하는 것이 좋다.

3. Optimize

단편화 제거 작업(defrag operation)과 같이, optimize table 명령문을 사용하면 사용하지 않은 공간을 회수할 수 있다. MyISAM 엔진에서는 optimize 명령문은 말그대로 단편화 제거 작업만을 수행한다. 반면 InnoDB 엔진의 경우 내부적으로 ALTER TABLE문을 실행하여, MySQL 서버에 대해 테이블과 인덱스를 재생성하도록 요청한다.

http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

단일 테이블에 대해 optimize를 하려면:

mysql> OPTIMIZE TABLE {table name};

콘솔에서 데이터베이스의 전체 테이블을 optimize를 하려면:

$ mysqlcheck -u root -p --optimize --databases dbname

만약 InnoDB라면 결과에 "Table does not support optimize, doing recreate + analyze instead” 메시지가 나온다.

4. Analyze

analyze를 실행하면 인덱스를 재생성하여 성능을 최적화하는데, 키를 재분배하기 때문이다. 만약 인덱스가 제대로 생성되어 있음에도 slow query가 발생한다면, analyze를 실행하는 것을 고려해 볼만하다. analyze를 실행하면 read 락이 걸린다. 만약 모든 테이블이 InnoDB 엔진을 사용한다면, optimize 과정에 이미 analyze가 포함되어 있다.

http://dev.mysql.com/doc/refman/5.1/en/analyze-table.html

단일 테이블에 대해 analyze를 하려면:

mysql> ANALYZE TABLE {table name};

콘솔에서 데이터베이스의 전체 테이블을 analyze를 하려면:

$ mysqlcheck -u root -p --analyze --databases dbname

InnoDB에서 analyze를 하는 경우, 몇가지 특이점이 있다. 특히 analyzer가 취하는 샘플의 갯수가 다를 수 있다는 점이다(샘플의 갯수는 innodb_stats_sample_pages 옵션으로 설정할 수 있다). 기본값이 매우 작기 때문에, analyze를 여러번 시도하게 될 때, 그때마다 결과가 달라질 수도 있다.

더 자세한 내용은 아래를 참조하라.

http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

반응형

'MySQL' 카테고리의 다른 글

[MySQL] mysqldump 시 lock tables  (0) 2016.05.31
[펌][MySQL] 비교 연산자  (1) 2016.03.04
[MySQL] DUMP (mysqldump) export  (1) 2016.02.25
[MySQL] error 1130  (0) 2016.02.19
[MySQL] 임시 DB 설치 3.23.58 (3.*) / python  (0) 2016.02.19
반응형


이렇게 빨리 Migration을 진행할 줄 몰랐다.
물론 내가 진행 하는 것이 아니지만 이참에 여러 테스트를 해 보았다.

Oracle과는 다르게 쉽게 sql 문을 뽑아 낼 수 있고 쉽게 migration을 진행할 수 있는점이 매력적이다.
정확히 말하면 한단계 과정을 덜 거치는 차이일 뿐인데..

1. 단순히 data를 txt 파일로 export 진행
-자신이 원하는 데이터를 바로 파일로 export 하는 것이다.

mysql> SELECT * FROM 테이블명 INTO OUTFILE '/my_log/tmp1.txt';

이걸로 끝이다.
아래는 테스트로 뽑아낸 데이터다
(디폴트는 Tab이다. 혹시라도 바꾸고자 한다면 명령문에 FIELDS TERMINATED BY '문자' 를 추가해 주면 된다

mysql> SELECT * FROM 테이블명 INTO OUTFILE '/my_log/tmp1.txt''
    -> FIELDS TERMINATED BY ',';

이렇게 하면 , 로 컬럼마다 구분을 해 준다


--너무 성의 없어 보이는군....하지만 탭으로 나누어서 데이터가 export 된 것을 확인 가능하다.


2. Mysqldump 를 이용하여 데이터 export

 

기본 구문은 아래와 같다

$> mysqldump -u 유저명 -p비밀번호 DB명 


아래는 특정 테이블만 뽑아내는 내용

$> mysqldump -u 유저명 -p비밀번호 DB명 테이블명 


아래는 테이블의 특정 조건만 뽑아 내는 내용이다

$> mysqldump -u 유저명 -p비밀번호 DB명 테이블명 --where="조건절" > 파일명


추가로 위와 같이 뽑아내면 테이블 스키마도 같이 export 되어 나오기 때문에 다순 데이터 구문만 뽑아내고 싶다면 아래와 같이 진행해 보자

$> mysqldump -u 유저명 -p비밀번호 DB명 테이블명  --where="조건절" --no-create-info | grep  '^INSERT' > 파일명


샘플 명령문

$> mysqldump -u root -pmysql TESTDB TestTable --where="idx=5 and status='Normal'" --no-create-info | grep  '^INSERT' > TestTable_query.sql


-- 캡쳐는 회사 디비 내용을 가지고 테스트 하느라 비공개....




Import는 다시 진행 후 업로드 해야겠다.


반응형

'MySQL' 카테고리의 다른 글

[펌][MySQL] 비교 연산자  (1) 2016.03.04
[펌] [MySQL] 5.1의 InnoDB에서 MySQL 테이블 최적화하기  (0) 2016.03.03
[MySQL] error 1130  (0) 2016.02.19
[MySQL] 임시 DB 설치 3.23.58 (3.*) / python  (0) 2016.02.19
[MYSQL] Socket 접속  (0) 2016.02.11
반응형

[출처] http://ooz.co.kr/158


Putty 프로그램을 사용하다 보면 종종 어떤 서버에서는 한글이 깨져서 보이는 경우가 있습니다.

 

Putty 가 기본으로 UTF-8 문자 집합(Character Set)을 사용하는데, 서버의 locale 인코딩 값이 UTF-8 이 아닌 경우에 문제가 발생합니다.

보통 한국어로 된 리눅스 서버를 운용한다면 아마 서버 locale이 EUC-KR 문자 집합으로 되어 있을 것입니다.

 

참고로 서버 인코딩 정보를 확인하는 방법은 서버에 접속하여 locale 명령어를 실행하면 됩니다.

 

아래와 같이 서버에 접속하여 안내 문구가 나올만한 명령어를 입력해봅니다.

 

[aaa@localhost ~]$ cd aabbccddee (존재하지 않는 디렉토리)

 

 

무언가 메시지가 떴는데, 전혀 알아볼 수가 없네요.

 

어떻게 해야 할까요? 문자 집합을 서로 맞추어 주면 될 것 같은데요.

서버를 UTF-8 환경으로 변경해 줄 수도 있지만, 계속 사용해왔던 서버의 환경을 변경하는 것은 조금 꺼려지기도 하는 부분입니다.

그리고 굳이 그럴 필요도 없이 Putty의 환경을 변경함으로써, 간단히 해결될 문제이기도 하지요.

 

단순히 Putty 의 문자 집합을 변경해 보도록 하겠습니다.

 

 

방법1) 가장 쉬운 방법! - Putty 의 설정 화면에서 문자 집합 설정.

 

 PuTTY를 실행시킵니다!!

 접속하려는 Host Name을 입력 또는 하단의 저장 목록에서 로드(Load) 합니다.

 그리고 좌측 트리 메뉴에서 Window - Translation 을 선택합니다.

 

 

 

아하! 여기가 접속 환경에 맞는 문자 집합을 설정할 수 있는 곳이군요!

 

Remote character set 선택 박스에서 서버의 문자 집합을 선택하면 됩니다.

 

그런데 EUC-KR 은 찾아봐도 없군요. 그럼 EUC-KR 과 호환이 되는 문자 집합이 있을까요?

네 있습니다. CP949 인코딩은 EUC-KR 의 확장된 버전으로 하위 호환성을 가지고 있는 문자 집합니다.

 

 

여기서 CP949를 선택하여 주면 문제가 해결됩니다.! - 끝 -

 

 

앗!! 이런.. 제 PuTTY에 CP949 문자 집합 또한 없습니다.

강제로 CP949를 입력하고, 접속해도 제대로 한글이 보이지 않습니다.

 

 

방법2) 다음 방법! - Putty 의 레지스트리에서 FontCharSet 설정하기

그러면 이제 레지스트리를 건드릴 차례입니다. 해당 문자 집합 설정 정보를 저장하는 레지스트리에 강제로 우리가 원하는 문자 집합을 설정해 보겠습니다.

 

윈도우 하단의 시작 버튼을 클릭하여 [실행] - regedit.exe 를 입력한 후, 실행합니다.

  

 

 

레지스트리 편집기가 실행됩니다.

 

좌측 트리 메뉴에서

 

[HKEY_CURRENT_USER - Software - SimonTatham - Putty - Sessions]

 

로 들어갑니다.

 

Sessions 내에는 Putty에 등록된 서버 접속 정보 목록들이 있습니다.

한글이 깨지는 서버의 세션 정보를 클릭합니다.

 

 

그리고 우측 메뉴에서 FontCharSet 항목을 확인합니다. 값이 0x00000000 (0) 으로 설정되어 있습니다.

이를 16진수로 81(0x81) 또는 10진수로 129 를 입력한 후, 확인을 누릅니다.

 

 

0x81 은 한글의 Charset 을 의미하는 값입니다.

 

아래와 같이 FontCharSet 이 0x00000081 (129) 로 변경되었습니다.

 

 

이제 다시 PuTTY로 접속해 보겠습니다.!!

문제가 해결 되었습니다. - 끝-

 

아니 아직도 안된다구요!!!!?!?!?!??!

 

 

방법3) 마지막 방법! - Putty 의 레지스트리에서 LineCodePage 설정하기

 

 Putty에는 CharacterSet을 지정할 수 있는 또다른 항목이 있습니다.

 

 

 

 LineCodePage 인데, 값이 아마 기본 인코딩을 사용한다는 Default 값으로 설정되어 있던지, 또는 공란으로 되어 있을 것입니다. 

 여기에는 실제 문자 집합 명을 입력할 수 있습니다.

 

 아래와 같이 LineCodePage 의 값을 CP949 로 설정합니다.

 

 

 

 값이 정상적으로 설정되었습니다. 이제 서버에 다시 접속해 보겠습니다.

 

 

 

 드디어 한글이 보입니다!! (이 방법까지 썼는데, 한글이 제대로 보이지 않는다면 서버가 한글이 아닌 다른 인코딩으로 되어 있는 경우일 것입니다. 서버에 맞는 문자 집합만 설정해 주시면 됩니다. 단, 문자 집합이 한글이 아닌 서버겠죠?^^)

 

 

문제가 해결되었습니다. - 정말 끝! -

 

 

많은 분들에게 도움이 되었으면 합니다.^^


반응형

'OS > LINUX' 카테고리의 다른 글

[CentOS 6.6] FTP 설정  (1) 2016.02.17
mkfs 로 생성 시 오류  (0) 2015.10.15
반응형

또 한번의 삽질 추가.


임시 DB를 설치 한 이후 외부에서 접속을 진행 하였더니,

접속이 안되어서 확인.


처음에는 쉽게 port로 생각하여 Open 하였지만 연결 실패..


유저도 제대로 생각했다고 했지만 여기서 함정..

역시...난 멍청한 것인가...




1. Linux Port Open

vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

-A RH-Firewall-1-OUTPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT


또는 아래와 같이 명령어 입력

[root@localhost sysconfig]# iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT

[root@localhost sysconfig]# iptables -I OUTPUT 1 -p tcp --dport 3306 -j ACCEPT


하지만...failed...

>> ERROR 1130 오류 코드


ERROR 1130 (00000): Host 'x.x.x.x' is not allowed to connect to this MySQL server


2. User 생성 확인

확인을 했더니 IP가 제대로 입력이 안되었음...OTL...단순히 local host로만 생성을 한 것임...



아래와 같이 추가로 생성하여 해결



참조 : http://imdsoho.tistory.com/entry/mysql-%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%B6%94%EA%B0%80-%EB%B0%8F-error-1130-%EC%B2%98%EB%A6%AC

반응형
반응형

OS 재기동이 필요한 시점에 문제가 발생할 소지가 있기 때문에

이럴 때를 대비해서 백업용 DB가 필요하다.


문서로 정리 하였지만, 

작성한 것을 복-붙 이다.




임시 MySQL DB 구축

작성일 : 2016.02.18

작성자 : Louis.Kim

mysql> select version();

+-------------+

| version()   |

+-------------+

| 3.23.58-log |

+-------------+

1 row in set (0.00 sec)

 

1. zip 파일을 임시 DB에 복사 및 압축해제

          

ex) tar -xvzf 파일명

 

2. 압축 해제한 mysql 서버 폴더에 install.sh 파일을 생성 및 아래내용 복사 (make 파일생성)

  

참고로 본 서버 참고하여 생성

useradd -M -s /sbin/nologin mysql

./configure \

--prefix=/usr/local/mysql \

--with-charset=euc_kr \

--without-innodb \

--with-unix-socket-path=/tmp/mysql.sock \

--without-comment \

--without-debug \

--with-mysqld-user=mysql \

--without-bench \

--without-docs \

--localstatedir=/usr/local/mysql/var  \

--sysconfdir=/etc \

--disable-shard \

--enable-assembler && make -j 6 && make install

 

echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf && ldconfig

cf) localstatedir 의 경우 기본적으로 설치되는 경로이기에, 경로가 변경된다면 해당 경로 수정

   혹여나 변경을 못했다면 my.cnf 에서 수정 가능


 

3. .bashsrc 수정

 

vi ~/.bashrc 한 후 아래 alias 추가

vi = '/usr/bin/vim'

. ~/.bashrc 또는 source ~/.bashrc 로 설정을 다시 로딩

 

4. .bash_profile 수정

 

/usr/local/mysql/bin path에 추가 (vi ~/.bash_profile)

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

 

-개인을 위해서 아래 추가

mysql_base=/usr/local/mysql/

mysql_home=$mysql_base/var/

. ~/.bash_profile 또는 source ~/.bash_profile 로 설정을 다시 로딩

 

5. install.sh 파일 실행

 

$root > sh install.sh

 

오류 발생 시 하단에 오류 발생 찾아서 확인

 

6. 설치가 완료 되면 my.cnf 생성

 

root$> vi /etc/my.cnf

[client]

#password       = your_password

port            = 3306

socket          = /tmp/mysql.sock

 

[mysqld]

port            = 3306

socket          = /tmp/mysql.sock

skip-locking

skip-innodb

 

set-variable    = key_buffer=512M

set-variable    = max_allowed_packet=16M

set-variable    = table_cache=512

set-variable    = sort_buffer=4M

set-variable    = record_buffer=2M

set-variable    = thread_cache=512

set-variable    = thread_concurrency=16

set-variable    = myisam_sort_buffer_size=64M

set-variable    = max_connections=300

set-variable    = max_heap_table_size = 2000M

set-variable    = tmp_table_size=1000M

set-variable    = max_tmp_tables=256

set-variable    = max_binlog_size =300M

set-variable    = long_query_time = 1

 

server-id       = 1

log-bin=/db_log/LOG

binlog-do-db=DARKEDEN

log-slow-queries= /db_log/slow-query.log

 

log=/backup/ALOG/mysql.log

 

[mysqldump]

quick

set-variable    = max_allowed_packet=16M

 

[mysql]

no-auto-rehash

 

[isamchk]

set-variable    = key_buffer=256M

set-variable    = sort_buffer=256M

set-variable    = read_buffer=2M

set-variable    = write_buffer=2M

 

[myisamchk]

set-variable    = key_buffer=256M

set-variable    = sort_buffer=256M

set-variable    = read_buffer=2M

set-variable    = write_buffer=2M

 

[mysqlhotcopy]

interactive-timeout

Port 는 기본 포트 3306

 

Log-bin log-slow-queries , log 등의 해당 Directory가 없을 경우 생성해 줘야 함.

 

[root@localhost /]# mkdir /db_log

[root@localhost /]# chown -R mysql:mysql /db_log

 

[root@localhost /]# mkdir -p /backup/ALOG

[root@localhost /]# chown -R mysql:mysql /backup

 

datadir 의 경우 해당 데이터가 쌓이는 장소이므로 없으면 default에 쌓이지만 변경이 원하고자 한다면 datadir 항목을 추가 (ef- datadir=/my_data1/datfile/ )

 

이 모든 항목들은 mysqld를 중지한 후 진행해야 함

 

 

 

7. Python 설치 (MySQL 에서 사용하기 위한 라이브러리 설치

   - README 보면서 진행)

 

  $ tar xfz MySQL-python-1.2.1.tar.gz

  $ cd MySQL-python-1.2.1

  $ chmod 700 setup.py   --권한이 없을 경우 권한 부여

  $ # edit site.cfg if necessary

  $ python setup.py build

  $ sudo python setup.py install # or su first

 

확인방법

  - Python 접속

  $phthon

  $ import MySQLdb  후 에러가 발생 안되면 완료

 

8. DB 설치

 

필히 설치할 필요 없으나, 아래 폴더에서 설치가 가능

$ cd /usr/local/bin

$ ./mysql_install_db

/usr/local/mysql/var 에 설치가 되었는지 확인이 가능

 

9. 해당 데이터 및 권한 가져오기

 

- 데이터는 일간 백업에서 가져오면 가능(FTP 서버 내 Daily_BK) -> 데이터

 - $ tar -cvzf mysql_back1.tgz /usr/local/mysql/var/mysql  -> 권한

   해당 압축 파일을 FTP서버로 전송 후 다시 임시 DB로 전송

 

10. 임시 DB에서 권한 및 데이터 복구

 

- 권한의 경우 기존 mysql 해 놓은곳에 덮어 쓸것 (기존은 백업)

- 일간 백업한 것은 DARKEDEN 에 생성 (권한 확인 / 소유자 확인)

- 각각의 폴더의 유저 소유 권한을 확인(/usr/local/mysql/var 의 경우 아래로 mysql으로 해야함)

 

11. MySQL open

 - $>safe_mysqld&  로 실행 후 $>ps -ef | grep mysql 확인


 



오류 발생 시

1. sh install.sh 를 돌렸는데 발생하는 오류

...

checking for atomic operations... no

checking for int8... no

checking "LinuxThreads"... "Not found"

configure: error: This is a linux system and Linuxthreads was not

found. On linux Linuxthreads should be used.  Please install Linuxthreads

(or a new glibc) and try again.  See the Installation chapter in the

Reference Manual for more information.

해결방법

mysql 설치중 아래와 같은 error 메세지 발생시에는 간단히 아래 방법대로 진행

 

checking "LinuxThreads"... "Not found"

configure: error: This is a linux system and Linuxthreads was not

found. On linux Linuxthreads should be used.  Please install Linuxthreads

(or a new glibc) and try again.  See the Installation chapter in the

Reference Manual for more information.

 

방법:

/usr/include/pthread.h 화일을 열어 맨위 부분쯤에 아래 내용을 추가 하고 저장

 

/* Linuxthreads */

 

mysql configure 과정에서 pthread.h 파일을 찾아 위 내용이 있는지 확인하는 것으로

glibc에서 없는 경우 에러 메세지가 발생


참고 : http://faq.hostway.co.kr/Linux_DB/1303

 

반응형
반응형

오랜만에 CentOS 를 설치 후 몇번의 네트워크 삽질 후 

Local host 에서 putty 로 접속을 마쳤다.


FTP도 필요해서 ftp 설치를 했더니 정리가 필요해서 아래와 같이 정리해 본다.


FTP 설치

yum -y install vsftp ftp




FTP 설정

vi /etc/vsftpd/vsftpd.conf


...
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
...

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES


방화벽 허용(20, 21 포트 허용)

맨아래에 추가

...

-A INPUT -m state --state NEW -m udp -p udp --dport 20 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 21 -j ACCEPT




FTP 를 항상 시작 하도록 설정

[root@localhost ~]# chkconfig --level 2345 vsftpd on


root 로 접속 하기 위해서 아래 파일들에서 root 삭제

[root@localhost ~]# ls /etc/vsftpd/

ftpusers                user_list               vsftpd.conf             vsftpd_conf_migrate.sh


아래 2개의 파일에서 vi로 열어 root 삭제


[root@localhost ~]# vi /etc/vsftpd/ftpusers

[root@localhost ~]# vi /etc/vsftpd/user_list


서비스 재시작

방화벽 설정 

[root@localhost ~]# vi /etc/sysconfig/iptables


ftp 재시작

[root@localhost ~]# service vsftpd restart





500 OOPS 대처 방안

>root 로 FTP 접속 시 아래와 같이 접속 오류가 발생


응답: 331 Please specify the password.

명령: PASS ******

응답: 500 OOPS: cannot change directory:/root

오류: Critical error: 서버에 연결하지 못함


위와 같이 뜨면 아래와 같이 확인 후 설정 변경

[root@localhost ~]# getsebool -a | grep ftp

allow_ftpd_anon_write --> off

allow_ftpd_full_access --> off

allow_ftpd_use_cifs --> off

allow_ftpd_use_nfs --> off

ftp_home_dir --> off

ftpd_connect_db --> off

ftpd_use_fusefs --> off

ftpd_use_passive_mode --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

tftp_use_cifs --> off

tftp_use_nfs --> off


[root@localhost ~]# setsebool allow_ftpd_full_access on

[root@localhost ~]# service vsftpd restart



[참고]

http://matthew.kr/centos-%EC%9D%98-vsftpd-%EC%A0%91%EC%86%8D%EC%8B%9C-500-oops-cannot-change-directoryroot-%EC%97%90%EB%9F%AC/


반응형

'OS > LINUX' 카테고리의 다른 글

[펌]PuTTY 한글 깨짐 문제 해결하기  (1) 2016.02.23
mkfs 로 생성 시 오류  (0) 2015.10.15
반응형

MYSQL 을 linux 상에서 접속을 할줄 몰라 열심히 삽질 하다가 겨우 찾아냈다.


사실 말하면 그동안 동료가 알려줬지만 제대로 못 외워서 삽질한게 더 맞는 것 같다.

역시 삽질하면서 배워야지 자기 것이 되는게 맞는 말인듯....


일반적으로 mysql 접속은 아래와 같다.


/usr/local/mysql/bin/mysql -u user01 -p user_db


-u 뒤에는 유저명

-p 뒤에는 패스워드를 작성하면 된다.


하지만 나는 진행할려고 할때마다 아래와 같은 에러가 발생했다.


[root@devDB ~]# mysql -h localhost -u root -p

Enter password:

ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)


왜이리 접속이 안되서 열심히 찾아보이 socket 을 이용해서 접속하는 것이기에,

해당 socket파일에 명시가 되어 있지 않다고 되어 있다.


Oracle 과 비교하면 리스너와 같은것으로 보면 될까?? 리스너 포트가 변경되었을 때

리스너 포트를 명시하는 경우다.


아래와 같이 진행하면 된다.

해당 개발DB의 경우 cnf 파일에 명시되어 있는데 cnf 파일을 보면 아래와 같다


...

[mysqld7100]

socket          = /tmp/mysql_1100.sock

port            = 7100

pid-file        = /home/DATABASE/DBPart/mysql_1100.pid

datadir         = /home/DATABASE/DBPart/

server-id       = 1100

...


그래서 아래와 같이 시도를 하면 접속이 된다.


mysql -u root -p -S /tmp/mysql_1100.sock


참고로 -p 뒤에 비밀번호를 붙이지 않으면 비밀번호를 묻게 된다.



mysql -u user01 -p user_pw

mysql : MYSQL 데이터베이스 클라이언트 프로그램

-u : MYSQL 사용자명을 지정하기 위한 옵션

-p : 지정한 사용자의 MYSQL 패스워드를 입력하기 위한 옵션

user_db : 지정한 사용자가 사용할 MYSQL 데이터베이스명


Oracle 하다가 Mysql 를 하려고 하니 참 낯설다-ㅋㅋㅋ


반응형
반응형

어떤 DBMS이든지 마찬가지겠지만, DBMS를 효율적으로 적은 리소스로 가장 좋은 성능을 내게끔 사용하기 위해서 가장 먼저 해야 하는 일은 어떠한 구조로 만들어 졌는지 확인하는 것이다. DBMS의 특성을 확인하여, 그 DBMS의 장점과 단점을 파악하고, 내가 원하는 서비스의 성격에 맞게 DBMS를 선택하여 사용하면, 훨씬 더 효율적으로 데이터를 관리 할 수 있다. 

MySQL도 DBMS로서 다른 DBMS와 비교되는 구조와 특성을 가지고 있다. 이러한 특성을 미리 나열하기 전에 MySQL의 내부 구조에 대해 먼저 알아보자. 

 

[그림 1-1]

[그림 1-1]은 MySQL Conference에서 MySQL 내부 구조 설명시 MySQLAB에서 사용했던 그림이다. 여기에서 알수 있는 것은 MySQL Server의 내부의 모듈들은 컴포넌트 형태로 되어있어서 여러 기능들이 퍼즐 형식으로 엮여져 있다는 것이다. 

퍼즐 형태로 만들어진 내부 모듈들로 인해 내부적으로 다른 스토리지 엔진을 추가하거나, 기능을 추가할때, 다른 모듈에 크게 영향을 주거나 하는 일이 적은 것을 확인할 수 있다. 

맨 위의 오른쪽에 표시된 SQL Control interface는 MySQL Client와 MySQL Server 사이에 존재하는 Interface로서 백업을 진행할 때나, 상태 정보를 보고 싶을때와 같은 경우에 컨트롤 하는 문장들을 의미한다. 

사용자 삽입 이미지

 

[그림 1-2]
[그림 1-2] 도 MySQLAB에서 MySQL Server와 Application과의 관계및 여러 Tool들을 설명하기 위해 사용하는 그림 중의 하나이다. 

크게 MySQL은 세 단계로 나누어 생각할 수 있다. 첫번째는 위의 그림에서 Connector로서 표현한 Client 부분, 두번째는 MySQL Server의 머리부분에 해당하는 부분으로 SQL을 분석하여 실행계획을 만드는 부분, 세번째는 데이터를 저장하고 추출하는 Storage Engine 부분이다. 

맨 위의 Connector는 MySQL Server에 접근하기 위해 Application에서 설치하여 사용할 수 있는 모듈들을 나타낸다. C API, JDBC등 언어에 따라 여러가지 Connector들을 사용할 수 있고, 이 Connector들을 사용하여 MySQL Server와 통신할 수 있다. 

두번째 부분는 MySQL의 인스턴스 부분으로 Client로 부터 들어온 쿼리를 분석하고 최적화 하여 실행계획을 만들고, 필요할 경우 메모리에 cache하는 기능을 담당하는 부분이다. 

세번째 부분은 Storage Engine 영역으로 데이터를 저장하고, 추출하는 부분을 담당하는 부분으로 나눌 수 있다. 위의 그림에서 보는 것과 같이 스토리지 엔진의 종류는 다양하다. MySQLAB에서 만든 스토리지 엔진도 있고, 다른 서드파티에서 만든 스토리지 엔진도 있다. 화면에 보이는 스토리지 엔진은 대부분 MySQLAB에서 만든 것들이다. 

각각의 스토리지 엔진은 그 데이터 저장방법 및 추출 방법에 장점과 단점을 가지고 있다. 그렇기 때문에 실제 서비스에 사용할 때에는 스토리지 엔진 특성에 맞게 취사 선택을 잘 해야 한다. 

실제 한국에서 웹 서비스에 많이 사용하는 스토리지 엔진은 MyISAM과 InnoDB이다. 그러므로 추후에 강좌에서는 MyISAM과 InnoDB에 대해 자세히 다루도록 할 예정이다. 

[그림 1-2]의 MySQL Server 부분에 표현된 SQL 분석 부분에 관련된 부분을 자세히 살펴보도록 하자. 

먼저 Connection Pool은 MySQL 내부에서 관리하는 Connection Pool을 말하는 것으로 새로운 유저의 커넥션 쓰레드를 DB에 할당하여 저장하는 부분을 말한다. Connection을 생성하게 되면 자동적으로 그 Connection에서 실행할 SQL 작업을 위한 메모리가 자동적으로 할당된다. 

SQL Interface는 DML, DDL, Stored Procedure, View, Cursor, Trigger등의 지원을 위한 Interface부분을 말하고, 모든 SQL 함수에 대한 지원을 제공하는 모듈을 말한다. 

Parser/Optimizer는 SQL의 권한을 확인하고, SQL문을 데이터베이스 내부 언어로 변환하고, 수행 경로를 분석하는 등 SQL문을 실행을 위한 준비 작업을 하는 부분을 말한다. 이 부분은 모든 스토리지 엔진에 동일하게 적용되기 때문에 스토리지 별로 별도의 코딩이 필요없다. 

메모리 캐쉬 부분은 빈번하게 사용되는 인덱스나 데이터를 빠르게 접근하게 하기 위해 메모리에 저장하는 영역을 말하며, 스토리지 엔진에 따라 그 기능은 조금씩 차이가 난다. 


반응형

'MySQL' 카테고리의 다른 글

[펌] [MySQL] 5.1의 InnoDB에서 MySQL 테이블 최적화하기  (0) 2016.03.03
[MySQL] DUMP (mysqldump) export  (1) 2016.02.25
[MySQL] error 1130  (0) 2016.02.19
[MySQL] 임시 DB 설치 3.23.58 (3.*) / python  (0) 2016.02.19
[MYSQL] Socket 접속  (0) 2016.02.11
반응형

[출처]

http://hajadc.tistory.com/65


PUTTY는 원격으로 리눅스 쉘을 이용하는 ssh를 이용하는데 있어 가장 흔히 이용되는 프로그램이다. 강력한 성능에 실행파일 하나로 설치 안해도 되는 포터블 버전도 제공하기 때문에 정말 자주, 많이 이용되는 프로그램이다. 하지만 기본 설정대로 이용시에 약간의 불편함이 있어 그를 해결하기 위해 내가 사용하는 설정을 공개한다.

1. 버퍼크기.
라인 버퍼는 커맨드를 실행했을 때 화면상에 보여지는 줄의 수를 말한다. 만약 라인 버퍼가 작다면, 여러줄 출력되는 명령어 실행시에 화면을 스크롤해서 보면 일정 부분이 짤려 보이게 된다.  기본 설정에서는 200줄로 한정돼 있으므로 200줄 이상 화면에 출력된다면, 실행 도중에 프린트 되는 내용의 일부가 짤리고 최종 200줄만 볼 수 있는 것이다.  그래서 나는 1만줄 정도로 쓰고 있다.

PUTTY 설정 화면에서 Window를 선택하면 오른편에 lines of scrollback 항목이 있다. 거기에 200을 바꿔주면 된다.



2. 폰트 설정.
쉘을 쓰다보면 쉽게 혼동되는 글자들이 있다. 예를 들어, 소문자 엘, 대문자 아이, 숫자 일 같은 것이나, 숫자 영, 대문자 오 같은 것이 있다. 이런 부분을 해결하기 위해서 프로그래머를 위한 폰트에 대한 많은 문서들이 인터넷에 있다.

PUTTY 설정 화면에서 Window > Appearance로 들어가면 폰트 설정하는 화면이 있다.


여기서 Change를 클릭해서 새로 열리는 창에서 폰트를 원하는 대로 바꿔주면 된다.  그리고, ClearType을 체크해주면 보다 선명한 폰트를 볼 수 있고, Gap between text and window edge를 3으로 주게 되면, PUTTY 창 프레임에 바로 붙어 보이던 글자들이 약간의 간격을 주게 되어 보다 읽기 쉽게 된다.

3. 문자 인코딩.
영어만 이용하는 경우에는 문제가 없으나 간혹 한글 같은 다른 문자를 이용하게 되면 문자가 깨지는 경우가 발생한다. 그런 경우를 막기 위해서는 인코딩을 바꿔줘야 한다.

Window > Translation으로 들어가면 오른편에 Character set translation 부분에서 인코딩을 UTF-8으로 바꿔주면 된다.


4. 화면 복사와 붙이기 방식.
PUTTY에서 출력되는 부분을 마우스를 이용해 복사하거나 붙여넣는 방식을 바꿔준다.  윈도우가 편한 사용자는 윈도우 스타일대로 드래그와 오른쪽 버튼으로 설정 메뉴를 불러올 수도 있고, 리눅스가 편한 사용자는 리눅스 터미널처럼 드래그하면 복사가 되고 가운데 버튼이 붙여넣기가 된다.

Window > Selection에서 Action of mouse use에서 윈도우나 xterm 등으로 설정 가능하다.


5. 색깔 설정.
가장 중요한 것이다. 내가 설정을 바꾸는 가장 큰 이유 중에 하나다. 파란색이 너무 어두워서 검은 배경화면과 잘 구별이 되지 않아 눈이 많이 피로해진다. 그래서 파란색을 조금 밝게 바꿔준다. 여기서 선택하는 색은 마음대로 바꿔도 무관하다.

Window > Colours에서 Select a colour to adjust 부분에서 ANSI blue와 ANSI blue bold 색을 바꿔준다.


6. 설정 저장.
이 모든 설정을 저장해야 나중에도 사용 가능하다.

Session에서 오른쪽에 Default Settings에 저장을 해주면 된다.


반응형

+ Recent posts