2014년 9월 12일 금요일

마리아DB 소켓 변경시 systemd-private-xxxx 디렉토리 안에 생성되는 문제.

마리아DB 의 socket 위치를 /tmp/mysql.sock 로 변경 하였습니다.
그랬더니, /tmp/systemd-private-xxxx/tmp/mysql.sock 으로 생성이 된다.
뭐 이렇게 해도 상관이 없으나, 클라이언트 접속시 접속이 되지 않는다.

[client]
socket=/tmp/mysql.sock

위와 같이 처리 하면 될 것 같았으나, 위처럼 하면 그냥 /tmp/mysql.sock 으로 인식된다.

centos 7버젼으로 설치 했더니, 조금 바뀐게 많다.
tmp 디렉토리의 보안이 추가 된것으로 보인다.

 
vim /lib/systemd/system/mariadb.service PrivateTmp=true 에서 PrivateTmp=false 로 변경.systemctl daemon-reloadservice mariadb restart

2014년 9월 5일 금요일

Mysql 4.0 -> 마리아 5.5.37 마이그레이션


  1. mysql 4.0  dump

  2. mysql 4.1.22 업그레이드

  3. mysql 5.5 업그레이드

  4. 마리아 db 설치.


mysql 4.1 버젼에서 마리아db 로 변경하는 부분은 그냥 덮어 쓰면 됨.

문제는 mysql 4.0 에서 mysql 4.1 로 업그레이드 부분.

binary로 그냥 덮어써도 되지만,  field size 가 반으로 줄어 버리기 때문에 문제가 발생 할 수 있다고 함.

그래서 dump 파일을 생성 해서 써야 함.
mysqldump -u root -ppass --opt --quick --quote-names --all-databases > allBackup.sql

-opt 옵션은 문제가 없다면 쓰는 게 좋음. 백업, 복구 시간을 엄청 단축시킴.
-quote-name 옵션은 테이블 필드명 중, sql 쿼리명이 들어가 있어서 문제를 발생시켜 넣어줌.

restore 완료후에는 mysql_install_db 를 실행 시켜줌.

아래는 마이그레이션시 사용한 스크립트.
#!/usr/bin/bash#mysql 4.1.22 설치#killall mysqldecho "kill mysql"service mysqld stoprm -rf /usr/local/mysql/cd /usr/local/src/mysql-4.1.22/make install #컴파일 되어 있음. 설치만 하면 됨./usr/local/mysql/bin/mysql_install_db chown -R mysql.mysql /usr/local/mysqlcp -f /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld service mysqld start#패스워드 설정/usr/local/mysql/bin/mysqladmin password 'test01'/usr/local/mysql/bin/mysql -uroot -ptest01 -e 'select now();'  #그냥 확인용 or 복구 시간 확인. #echo $?#1 이면 제대로 안된거.#덤프 복구시 필요. 안하면 에러남./usr/local/mysql/bin/mysql -uroot -ptest01 -e "set global max_allowed_packet=1000000000;"/usr/local/mysql/bin/mysql -uroot -ptest01 -e "set global net_buffer_length=1000000;"#--------------------------------------------------------------------------------------echo "Start Restoring..."#43번 dump 복구.# --debug : 에러 확인용.# -f 에러 무시 : 43번 덤프파일 duplication 에러남./usr/local/mysql/bin/mysql --debug -f -uroot -ptest01 < /usr/local/src/43_DB_ALL_20140820.sql#설치시 나오는 duplication 정상.#그외에 오류는 안 나야 됨.#복구 끝나면 root 패스는 pass 이 됨.#비교를 위해 test01로 설정./usr/local/mysql/bin/mysql -uroot -ptest01 -e 'select now();'  #복구 시간 확인. #--------------------------------------------------------------------------------------#mysql 5.5.39 설치#killall mysqldservice mysqld stopcd /usr/local/src/mysql-5.5.39/make installcp -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchown -R mysql.mysql /usr/local/mysqlservice mysqld start#/usr/local/mysql/bin/mysql_fix_privilege_tables --password=pass/usr/local/mysql/bin/mysql_upgrade --password=pass/usr/local/mysql/bin/mysql -uroot -ppass -e 'select now();'  #그냥 확인용. chkconfig mariadb on#마리아DB 설치 yumservice mysqld stopservice mariadb stopln -fs /usr/local/mysql/data/ /var/lib/mysqlyum -y remove  mariadb  mariadb-devel mariadb-libs mariadb-server yum -y install mariadb  mariadb-devel mariadb-libs mariadb-server service mariadb startmysql_upgrade --password=pass

완벽하지 않음.

마리아db 설치 완료 my.cnf 에 euckr 추가.
[mysqld]...#charset configcharacter-set-server=euckrinit_connect=SET collation_connection=euckr_korean_ci init_connect=SET NAMES euckr character-set-server=euckr collation-server=euckr_korean_ci...

2014년 8월 29일 금요일

setuid, setgid 제거.

#test 디렉토리 생성.
[root@localhost src]# mkdir test\

#확인
[root@localhost src]# ll
합계 4
drwxr-xr-x 2 root root 4096 2014-08-28 16:30 test

#setuid 퍼미션 설정
[root@localhost src]# chmod 4000 test/

#확인.
[root@localhost src]# ll
합계 4
d--S------ 2 root root 4096 2014-08-28 16:30 test

#0000 8bit로 setuid 퍼미션 제거 시도.
[root@localhost src]# chmod 0000 test/

#확인. 제거가 안됨.
[root@localhost src]# ll
합계 4
d--S------ 2 root root 4096 2014-08-28 16:30 test

#심볼링 형식으로 제거 시도.
[root@localhost src]# chmod -s test/

#확인. 제거가 이루어 짐.
[root@localhost src]# ll
합계 4
d--------- 2 root root 4096 2014-08-28 16:30 test

참고 : http://linuxg.net/how-to-set-the-setuid-and-setgid-bit-for-files-in-linux-and-unix/

ps. 참고사이트에서도  0755 같은 형태로 앞부분에 0(zeroi)를 주면 삭제된다고 나옴...; 뭐지..

2014년 8월 27일 수요일

2014년 8월 25일 월요일

심볼릭 링크를 설정시 문제점.

심볼릭 링크를 설정시
타겟을 위치를 절대경로로 만들시 하위에 새로 생성되는 문제가 있다.

아래와 같이 명령어를 실행 했다.
ln -s /usr/local/mysql/data/ /var/lib/mysql

처음에는 제대로 /usr/local/mysql/data/ 디렉토리가 /var/lib/mysql 로 제대로 생성 되었다.

다시한번 실행해보자.
아무오류 없이 명령어가 적용된다.

/var/lib/mysql 위치로 들어가 보면 data 심볼링 링크가 생긴다.

제일 마지막의 '/' 주건 안 주건 상관 없다.
/var/lib/mysql/

그냥 속편히
cd /var/lib/ln -s /usr/local/mysql/data/ mysql

이렇게 하면
ln: failed to create symbolic link `mysql/mysql': 파일이 있습니다
위와 같은 오류가 나온다.

심볼링 링크 삭제 시 주의점

symlinkFolder 가 심볼링 링크 파일일 경우

아래와 같이 하면 해당 파일의 하위까지 전부 지워버린다.
rm -rf symlinkFolder/

이런식으로 줘야 함.
rm symlinkFolder

2014년 8월 22일 금요일

mysql 에러 라인 출력.

mysql dump를 복구 하는데, 에러가 남.

근데, 어디서 에러가 나는 지 라인이 안나옴.

--debug  옵션을 주자.
mysql  --debug  database < database.sql

근데 에러남.

ERROR: Option 'debug' used, but is disabled

재컴파일 해야 된다고 함.
./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euckr --with-debug

mysql 4.1.22 버젼 이었음.