1. iptable에 3306 포트 허용 추가


// 정책 제일 마지막에 추가

[root@root etc]# iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

// 정책 제일 처음에 추가

[root@root etc]# iptables -l INPUT -p tcp --dport 3306 -j ACCEPT


--> #iptables -A INPUT <- 룰의 가장 마지막에 추가

       #iptables -I INPUT  <- 룰의 가장 처음에 추가

       iptables의 룰의 정책상 3306 포트 허용 정책 위에 차단되는 정책이 있다면 3306포트는 허용이 되지 않습니다.

      

제일 처음에 3306포트 허용을 추가하시는것이 편합니다.


2. iptables 설정 내용 저장

[root@root etc]# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]


3. iptables 재시작


[root@root etc]# /etc/init.d/iptables restart

iptables: 방화벽 규칙을 /etc/sysconfig/iptables에 저장 중: [  OK  ]

iptables: 방화벽 규칙을 지웁니다:                          [  OK  ]

iptables: 체인을 ACCEPT 규칙으로 설정 중:  filter          [  OK  ]

iptables: 모듈을 언로드하는 중:                            [  OK  ]

 

iptables: 방화벽 규칙 적용 중:                             [  OK  ]


4.포트 추가 확인

[root@face-evaluate etc]# iptables -L

Chain INPUT (policy ACCEPT)

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:mysql 



끝~~~

 

Posted by 사용자 guru_k
TAG It, MySQL

댓글을 달아 주세요

[MySQL]비밀번호 변경

MySQL 2015. 6. 30. 21:21

1. 데이터베이스 확인을 통해 비밀번호가 설정되어있는지 확인한다.


mysql> show databases;

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

| Database           |

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

| information_schema |

| mysql              |

| test               |

 

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


mysql> use mysql;

Database changed


mysql> select host,user,password from user;

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

| host          | user | password |

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

| localhost     | root |          |

| face-evaluate | root |          |

| 127.0.0.1     | root |          |

| localhost     |      |          |

| face-evaluate |      |          |

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

5 rows in set (0.00 sec)



2. 위와 같이 root 의 비밀번호가 설정되어있지 않다면 비밀번호를 설정하자 


mysql> update user set password = password("1234") where user = 'root';

Query OK, 3 rows affected (0.00 sec)

Rows matched: 3  Changed: 3  Warnings: 0


비밀번호를 1234로 지정해 주었다


3. 비밀번호가 변경되었는지 확인 한다.


mysql> select host,user,password from user;

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

| host          | user | password                                  |

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

| localhost     | root | *43533978C6C922693539D20006AC69FD1A69FD52 |

| face-evaluate | root | *43533978C6C922693539D20006AC69FD1A69FD52 |

| 127.0.0.1     | root | *43533978C6C922693539D20006AC69FD1A69FD52 |

| localhost     |      |                                           |

| face-evaluate |      |                                           |

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

5 rows in set (0.00 sec)


비밀번호가 변경되었다.


4. 마지막으로 적용 명령어를 입력한다다


mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)



끝~~



Posted by 사용자 guru_k
TAG It, MySQL

댓글을 달아 주세요

가상서버를 처음 설치 후 mysql에 접속시 위와 같은 에러가 뜬다면


service mysqld start


를 통해 mysql을 실행해주자

Posted by 사용자 guru_k
TAG It, MySQL

댓글을 달아 주세요

[root@root /] vi /etc/my.cnf


[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

log-slow-queries=/var/log/slow-queries.log

long_query_time=3

innodb_buffer_pool_size = 6G

 


-- > 빨간글씨 부분을 변경을 원하는 사이즈로 변경한다.

Posted by 사용자 guru_k
TAG It, MySQL

댓글을 달아 주세요

mysql 모니터링 중 innoDB Buffer Usage가 100%를 유지하는 현상이 발생


아래 공식대로 계산 후  innodb_buffer_pool_size 를 변경


SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_data';  -- IBPDataPages 
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_total'; -- IBPTotalPages
SHOW GLOBAL STATUS LIKE 'Innodb_page_size'; -- IPS

IBPPctFull = IBPDataPages * 100.0 / IBPTotalPages


IBPctFull이 95%이상일 경우 DB 서버 RAM의 75%까지 innodb_buffer_pool_size를 설정.


 IBPctFull이 95%이하일 경우 IBPSize = IPS X IBPDataPages / (1024*1024*1024) X 1.05 의 계산 값을 innodb_buffer_pool_size로 설정.


[참조] - http://dba.stackexchange.com/questions/19164/what-to-set-innodb-buffer-pool-and-why

Posted by 사용자 guru_k
TAG It, MySQL

댓글을 달아 주세요

현재 사용되는 서버의 MySQL에 접속하기 위해서는 모든 IP에서 접속을 할 수 있도록 설정해야 합니다.


1. 설정 확인 


mysql> SELECT Host FROM mysql.user WHERE user='root';





query문을 통해 HOST설정을 확인한다. %는 모든 IP의 접속을 설정한다는 것입니다. 

query문 확인 시 %가 설정 되어 있을 경우 다음 순서는 넘어가도 됩니다.


2. 모든 IP 접속 허용


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

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

mysql> FLUSH PRIVILEGES;


위에 query를 차례로 실행하여 줍니다. 이 후 1번의 query를 실행하여 Host에 %가 추가 되었는지 확인합니다.


3. my.cnf 수정

 - vi편집기를 이용하여 my.cnf파일을 엽니다.

   [root@root guru]vi /etc/my.cnf

 - bind-address = 127.0.0.1 앞에 #을 붙여서 주석 처리합니다. (#은 주석을 의미합니다.)

 - mysql를 재시작합니다.

   [root@root guru]service mysqld restart


4. 접속 확인

  - 아래 명령어를 통하여 접속이 정상적으로 되는지 확인합니다.

  [root@root guru]mysql -u root -h 129.129.12.12 -p

 

위와 같은 설정에도 접속이 되지 않는다면 

 

Posted by 사용자 guru_k
TAG It, MySQL

댓글을 달아 주세요

auto_increment를 이용하여 DB에 데이터를 쌓다보면 auto_increment가 어마어마하게 쌓여있는걸 볼수 있다.


tabel을 초기화할 경우 auto_increment도 초기화를 해야 할 경우가 있다.



alter table '테이블명' auto_increment = 1



위의 sql문을 이용하여 auto_increment를 초기화 하고 사용하면 된다.







Posted by 사용자 guru_k
TAG It, MySQL

댓글을 달아 주세요

concat()

 

ex ) 

 

concat(columncolumn)

 

item_table​

idx

 category1

category2 

 category3

 5

 1

 2

 3

 

 

select idx, concat(category1, "/", category2, "/", category3) as merge_column 

from item_table 

where idx = 5 

 

 idx

 merge_column

 5

 1/2/3

 

 

 

group_concat()

 

ex)

 

group_concat(field saparator '구분자')

 

item_table

 idx

 category

 5

 1

 5

 2

 5

 3

 

select idx, group_concat(category saparator '/') as group_concat

from item_table

where idx= 5

 

 idx

 group_concat

 5

 1/2/3


Posted by 사용자 guru_k

댓글을 달아 주세요

REPLACE(field, '수정 전', '수정 후');

 

ex)

update  테이블 set 컬럼=replace(컬럼 ,'수정 전','수정 후');

update coordi_type_table set coordi_type=replace(coordi_type, 'a' , 'b' );

 

coordi_type_table

 coordi_type (치환 전)

 coordi_type(치환 후)

 a

 b


 

Posted by 사용자 guru_k
TAG It, MySQL, replace

댓글을 달아 주세요

1. 날짜테이블을 생성하기 위한 더미 테이블 생성


create table t (n int);

 
insert into t values (1);

// 입력할 년도의 날짜 수만큼 행을 생성한다. 

 

insert into t select * from t

2. 날짜테이블 생성

create table date_t (d date, ds char(8)); 
 
insert into date_t
select d, date_format(d, '%Y%m%d') from (
  select @rnum:=@rnum+1 as rownum, date(adddate('2014-01-01', interval @rnum day)) as d
  from (select @rnum:=-1) r, t
  ) t
where year(d) < 2024;


Posted by 사용자 guru_k

댓글을 달아 주세요