MySQL 유저 추가 및 삭제 스크립트



리눅스에서 계정 생성은 useradd 라는 명령어가 존재한다.


하지만 mysql은 따로 존재하지 않고 쿼리문으로 생성하거나 조금 번거롭게 추가해주어야 한다.

(create database, grant all privileges on ...)


그래서 쉘스크립트를 만들어서 사용하면 좀 더 편하게 생성 또는 삭제가 가능하다.



명령어가 어느 경로에서도 바로 사용할 수 있도록 우선 PATH 환경변수를 확인해보자.


[root@conoha bin]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


/root/bin 폴더가 적당하겠다.


root 에 bin 폴더가 없다면 만들고 db_user_add, db_user_del 파일을 생성하자.

[root@conoha ~]# mkdir -m700 bin

[root@conoha ~]# touch /root/bin/db_user_add

[root@conoha ~]# touch /root/bin/db_user_del

[root@conoha ~]# chmod 700 /root/bin/db_user_add

[root@conoha ~]# chmod 700 /root/bin/db_user_del


#vi /root/bin/db_user_add 아래 내용으로 저장

#!/bin/sh


ROOT_ID='root'

ROOT_PW='루트암호'


USER_ID="$1"

USER_PW="$2"


if [ "$USER_ID" == "" ] ; then

echo "Input user id : "

read USER_ID

fi


if [ "$USER_PW" == "" ] ; then

echo "Input user password : "

read USER_PW

fi


mysql -u$ROOT_ID -p$ROOT_PW mysql -e "create database $USER_ID"

mysql -u$ROOT_ID -p$ROOT_PW mysql -e "grant all privileges on $USER_ID.* to '$USER_ID'@'localhost' identified by '$USER_PW'"

mysql -u$ROOT_ID -p$ROOT_PW mysql -e "grant all privileges on $USER_ID.* to '$USER_ID'@'%' identified by '$USER_PW'"

localhost 및 외부에서도 접근이 되는 권한이다.

외부에서 접속을 허용하지 않으려면 맨아래 부분을 막아주면 된다.


#vi /root/bin/db_user_del 아래 내용으로 저장

#!/bin/sh


ROOT_ID='root'

ROOT_PW='루트암호'


USER_ID="$1"


if [ "$USER_ID" == "" ] ; then

echo "Input user id : "

read USER_ID

fi


mysql -u$ROOT_ID -p$ROOT_PW mysql -e "drop user '$USER_ID'@'%'"

mysql -u$ROOT_ID -p$ROOT_PW mysql -e "drop user '$USER_ID'@'localhost'"

mysql -u$ROOT_ID -p$ROOT_PW mysql -e "drop database $USER_ID"

유저도 삭제하고 database 도 삭제하는 명령어다.

database 를 남기려면 맨 아랫줄은 막아주면 된다.


두개의 스크립트를 생성하였으니 이제 테스트 해보면 된다.


[root@conoha ~]# db_user_add testuser password123

[root@conoha ~]# db_user_del testuser


잘 되는지 확인하여야 한다.


스크립트에서 '루트암호' 는 mysql root 비밀번호를 적어주면 된다.



블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

CentOS 7.x 특정IP대역에만 특정포트허용하기



7.x 버전의 방화벽 firewall-cmd로 특정IP 대역만 특정 Port 를 허용해주는 룰 만들기 방법에 대해서 알아보자.


그리고 명령어가 너무 복잡하다고 생각되면 바로 편집을 해버리자.


[root@conoha ~]# firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8080" accept'

success

[root@conoha ~]# firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8081" accept'

success

[root@conoha ~]# firewall-cmd --reload

success

[root@conoha ~]# firewall-cmd --list-all

public (default, active)
  interfaces: eth0
  sources:
  services: http ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks: echo-request
  rich rules:
        rule family="ipv4" source address="192.168.1.0/24" port port="8080" protocol="tcp" accept
        rule family="ipv4" source address="192.168.1.0/24" port port="8081" protocol="tcp" accept


바로 편집해서 reload 하는 방법


# vi /etc/firewalld/zones/public.xml 파일을 열어서 아래처럼 바로 편집해서 저장


<?xml version="1.0" encoding="utf-8"?>

<zone>

  <short>Public</short>

  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>

  <service name="http"/>

  <icmp-block name="echo-request"/>

  <rule family="ipv4">

    <source address="192.168.1.0/24"/>

    <port protocol="tcp" port="8080"/>

    <accept/>

  </rule>

  <rule family="ipv4">

    <source address="192.168.1.0/24"/>

    <port protocol="tcp" port="8081"/>

    <accept/>

  </rule>

</zone>


# firewall-cmd --reload 해주면 룰이 적용된다.




블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

CentOS 7.x 방화벽 ping 막기



CentOS 7.x 대로 가면서 방화벽이 iptables 에서 firewalld 로 바뀌어서 적응이 잘 안된다.


일단 외부로 부터의 ping 을 막아보자. 그리고 서비스 포트 추가 및 방법에 대해서도 알아보도록 하자.


[root@conoha log]# firewall-cmd --permanent --zone=public --add-icmp-block=echo-request

success

[root@conoha log]# firewall-cmd --reload

success

[root@conoha log]# firewall-cmd --list-all

public (default, active)

  interfaces: eth0

  sources:

  services: dhcpv6-client http ssh

  ports:

  masquerade: no

  forward-ports:

  icmp-blocks: echo-request

  rich rules:


--permanent 를 붙여야 재부팅 후에도 적용이 된다.


우선 서비스 삭제 하기


[root@conoha log]# firewall-cmd --list-all

public (default, active)

  interfaces: eth0

  sources:

  services: dhcpv6-client http l2tpd pptp ssh

  ports: 443/tcp 10022/tcp 8080/tcp

  masquerade: yes

  forward-ports:

  icmp-blocks:

  rich rules:


[root@conoha log]# firewall-cmd --permanent --remove-service=l2tpd

success

[root@conoha log]# firewall-cmd --permanent --remove-service=pptp

success

[root@conoha log]# firewall-cmd --reload

success

[root@conoha log]# firewall-cmd --list-all

public (default, active)

  interfaces: eth0

  sources:

  services: dhcpv6-client http ssh

  ports: 443/tcp 10022/tcp 8080/tcp

  masquerade: yes

  forward-ports:

  icmp-blocks:

  rich rules:


[root@conoha log]# firewall-cmd --permanent --remove-masquerade

success

[root@conoha log]# firewall-cmd --reload

success

[root@conoha log]# firewall-cmd --list-all

public (default, active)

  interfaces: eth0

  sources:

  services: dhcpv6-client http ssh

  ports: 443/tcp 10022/tcp 8080/tcp

  masquerade: no

  forward-ports:

  icmp-blocks:

  rich rules:



그리고 masquerade 도 지워봤다.


이번엔 포트 추가 및 삭제


[root@conoha log]# firewall-cmd --permanent --zone=public --add-port=10001/tcp

success

[root@conoha log]# firewall-cmd --reload

success

[root@conoha log]# firewall-cmd --list-all

public (default, active)

  interfaces: eth0

  sources:

  services: dhcpv6-client http ssh

  ports: 443/tcp 10022/tcp 8080/tcp 10001/tcp

  masquerade: no

  forward-ports:

  icmp-blocks: echo-request

  rich rules:


[root@conoha log]# firewall-cmd --permanent --zone=public --remove-port=10001/tcp

success

[root@conoha log]# firewall-cmd --reload

success

[root@conoha log]# firewall-cmd --list-all

public (default, active)

  interfaces: eth0

  sources:

  services: dhcpv6-client http ssh

  ports: 443/tcp 10022/tcp 8080/tcp

  masquerade: no

  forward-ports:

  icmp-blocks: echo-request

  rich rules:


위쪽이 추가, 아랫쪽이 삭제이다.



블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

리눅스 일정 주기로 서버 상태 체크하는 스크립트



ConoHa VPS 가상서버호스팅을 이용중이다.


코노하 특징에 보면 


SLA

가동률 99.99%를 보장합니다. 소셜 게임용 클라우드 “GMO AppsCloud”등으로 축적된 안정된 운용 실적을 자랑하는 GMO인터넷인 만큼, 안심하고 업무에 사용 가능한 품질을 제공할 수 있습니다.


가동률이 99.99% 보장이라고 되어 있다.


정말로 이용해도 괜찮은 VPS 인지 서버 네트워크 상태를 1시간 간격으로 체크해보자.


한달 가량 체크해 보면 믿어도 될지 말지 알 수 있겠지.


/etc/cron.hourly/lifecron 파일을 생성해서 아래 내용을 추가해주자.


#!/bin/sh


DATE=`date +%Y%m%d\ %H:%M:%S`

MYIP=`nslookup conoha.ivps.kr | grep "Address: " | awk -F ': ' '{print $2}'`

echo $DATE $MYIP >> /root/life.log


크론탭을 이용한 1시간 마다 nslookup 으로 서버ip를 체크해서 기록하는 스크립트다.


나중에 로그가 쌓이고 나서 한번씩 체크해 보면 된다.


# cat /root/life.log | grep -v "서버ip"


결과가 안나와야 정상이다.



블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

리눅스 접속 소켓 제한 늘이기



리눅스 서버 운영시 특정 시간대에 동시접속자 수가 늘어나면 관리자 조차도 SSH 접속이 안될 때가 있을 것이다.


이런 경우는 ulimit -n 으로 open files 수를 확인해보고 이 수치를 늘여주면 된다.


[root@conoha ~]# ulimit -n 1024

[root@conoha ~]# ulimit -n

1024

[root@conoha ~]# ulimit -n 65536

[root@conoha ~]# ulimit -n

65536

[root@conoha ~]# ulimit -a

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 3891

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 65536

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 8192

cpu time               (seconds, -t) unlimited

max user processes              (-u) 3891

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited



이렇게 설정하고 재 로그인 하면 적용이 된다.


하지만 재부팅하면 설정값이 이전으로 돌아가 있을 것이다.


재부팅 후에도 적용을 하려면 /etc/security/limits.conf 파일을 열어서 아래 내용을 추가해주고 재부팅 해보자.


*       -       nofile  65536



블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

Traffic control for Squid proxy



Squid 프록시 서버 운영시 대역폭(Bandwidth)을 제어하는 옵션이 있다.

아래 처럼 설정을 하면 전체 트래픽은 50Mbps 로 제한되며 1 Connection 당 5Mbps 로 속도를 제어할 수 있다.


/etc/squid/squid.conf


delay_pools 1

delay_class 1 3

delay_access 1 allow all

# 1Conn 5Mbps / Total 50Mbps

delay_parameters 1 6400000/6400000 -1/-1 640000/6400000


속도 테스트를 해보자.


다른 서버에서 테스트를 해야된다. 로컬에서는 테스트해도 의미가 없는 것 같다.


[root@virtualbox ~]# squidclient -h conoha.ivps.kr -p 8080 -g 5 http://www.naver.com/

2016-04-19 19:18:06 [1]: 0.211 secs, 450.175355 KB/s

2016-04-19 19:18:19 [2]: 0.256 secs, 348.921875 KB/s

2016-04-19 19:18:25 [3]: 0.167 secs, 511.347305 KB/s

2016-04-19 19:18:32 [4]: 0.203 secs, 430.251232 KB/s

2016-04-19 19:18:43 [5]: 0.260 secs, 340.130769 KB/s

5 requests, round-trip (secs) min/avg/max = 0.167/0.219/0.260


속도가 5Mbps 를 넘지 못하고 있는게 확인된다.


squidclient 는 yum -y install squid 하면 사용할 수 있다.





블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

리눅스 프록시 서버 구축 후기



Proxy Server 를 구축해 놓았더니 하루도 안되어서 노출이 되어 버렸다.


IP랑 포트번호를 구글에서 검색해보니 free proxy server list 사이트 여러군데에 노출이 된 상황이였다.


그래서 지금은 포트를 변경하고 특정IP에서만 사용할 수 있게 바꾸어 놓은 상태이다.


혹시나 프록시서버를 구축하실 분들이 있다면 프록시 포트로 자주 사용되는 8080 Port 는 가급적 피해서 구축하길 바란다.


아마도 프로그램을 이용해서 자동으로 검색하는 것 같다.


설치 방법은 https://ivps.tistory.com/25 여기를 참고하면 된다.



▼ 2016.04.19 12:00


다시 풀어놓으니 2500 에서 3000 커넥션이 발생한다.


그런데 생각 보다 트래픽은 높지 않는 듯 하다.


10 ~ 30 Mbps 근처에서 왔다갔다 한다.


[root@conoha ~]# ./traffic.sh eth0

시간            수신(Kbps)      송신(Kbps)      Connection

13:21:07        12502           12438           2500

13:21:10        14268           13669           2502

13:21:13        12536           13380           2529

13:21:16        10800           10823           2522

13:21:19        13589           14495           2536

13:21:22        12748           13248           2515


17:29:15        15501           15880           2649

17:29:18        14426           14859           2713

17:29:22        11818           13425           2653

17:29:25        12041           11487           2621

17:29:28        11497           12773           2632

17:29:31        15065           15973           2657

17:29:34        19318           17033           2685

17:29:37        13579           15138           2665


17:39:12        32939           30396           2733

17:39:17        26573           28523           2760




▼ 2016.04.20 11:00


너무 많은 접속자로 인해 병목현상이 발생한 것 같다.


1Mbps 속도 밖에 안나온다.


11:04:11        535             1100            8135

11:04:14        539             1132            8149

11:04:17        530             1083            8169

11:04:20        536             1101            8161

11:04:23        540             1145            8143


그래서 막아버렸다.


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

애드센스 주소를 확인하지 않아 지급이 보류 중입니다




구글 애드센스 주소 확인구글 애드센스 주소를 확인하지 않아 지급이 보류 중입니다.

위 내용이 뜬지 일주일 가량 되었는데 집에 우편물이 아직 온게 없다. (2016.05.03 도착)


기재된 날로부터 3~5일 후, 2~4주가 걸릴 수 있다고 하니


MIN : 2016.4.8 +3 + 14 = 2016.4.25

MAX : 2016.4.8 + 5 + 28 = 2016.5.11


2016.4.25 ~ 5.11 사이에 도착한다는 의미 같은데~




구글에서 보내는 엽서는 언제 날아올래나??


2016.05.03 우편물이 도착하였다. PIN 번호를 입력하고 제출 버튼을 누르니 확인되었다고 나온다.



블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

CentOS 7.2 Squid 프록시 서버 설치



SQUID 데몬을 설치해서 PROXY Server 를 운영할 수가 있다.


디폴트 설정이 로컬 네트워크를 위한 환경설정이므로 외부IP에서 접속이 가능한 프록시 서버를 설정해 보자.


테스트 서버는 ConoHa VPS 서버이며 일본 도쿄에 위치해 있다.


IP우회 목적으로 포스팅을 하려고 한 것인데, 네이버, 다음은 로딩이 되는데 페이스북이랑 구글은 왜 안 열리는지 모르겠다.

: 원인을 찾았다.

해결 방법은 아래에 적용되어 있다.


원인은 나중에 알아보고 우선 설치 방법 부터 알아보도록 하겠다.


[root@conoha ~]# yum -y install squid

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: www.ftp.ne.jp

 * epel: ftp.kddilabs.jp

 * epel-debuginfo: ftp.kddilabs.jp

 * epel-source: ftp.kddilabs.jp

 * extras: www.ftp.ne.jp

 * ius: ius.mirror.constant.com

 * updates: www.ftp.ne.jp

Resolving Dependencies

--> Running transaction check

---> Package squid.x86_64 7:3.3.8-26.el7 will be installed

--> Finished Dependency Resolution


Dependencies Resolved


================================================================================

 Package         Arch             Version                  Repository      Size

================================================================================

Installing:

 squid           x86_64           7:3.3.8-26.el7           base           2.6 M


Transaction Summary

================================================================================

Install  1 Package


Total download size: 2.6 M

Installed size: 8.5 M

Downloading packages:

squid-3.3.8-26.el7.x86_64.rpm                              | 2.6 MB   00:00

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

  Installing : 7:squid-3.3.8-26.el7.x86_64                                  1/1

  Verifying  : 7:squid-3.3.8-26.el7.x86_64                                  1/1


Installed:

  squid.x86_64 7:3.3.8-26.el7


Complete!


yum 으로 squid 패키지를 설치한 다음에 /etc/squid/squid.conf 파일을 수정해주자.


# vi /etc/squid/squid.conf

http_access allow localnet

http_access allow localhost

http_access allow all


#http_port 3128

http_port 8080


cache_dir ufs /var/spool/squid 100 16 256



http_access allow all 추가

: all 을 해주면 모든 클라이언트 IP에서 접속이 가능하다. 특정 IP에서만 접속이 가능하게 하려면

acl myip src 특정IP 추가

http_access allow myip 추가

이렇게 해주면 된다.


http_port 3128 을 8080 으로 변경 (3128 포트도 되어야 하나 코노하에서 무슨짓을 해놓은 듯 하다. 그래서 8080으로 변경하였다.)


cache_dir 찾아서 주석을 풀어주자. (프록시서버가 IP우회 목적도 있지만 데이터를 캐싱해서 속도을 높여주는 목적도 있다.)


이제 환경설정 파일 수정은 끝났으니 방화벽에서 8080 포트를 허용해주자.


[root@conoha ~]# firewall-cmd --permanent --zone=public --add-port=443/tcp

success

[root@conoha ~]# firewall-cmd --permanent --zone=public --add-port=8080/tcp

success

[root@conoha ~]# firewall-cmd --reload

success


방화벽이 iptables 라면


# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

# service iptables save


구글, 페이스북 처럼 https:// 로 SSL 보안모드로 동작하는 페이지는 443 Port 를 방화벽에서 열어주어야 한다.


그리고 정확한 원인은 모르겠지만 ipv6 를 disable 시켜주어야 한다.


# vi /etc/sysctl.conf (아래 내용 추가)

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv4.ip_forward = 1

# sysctl -p (재적용)

[root@conoha ~]# sysctl -p

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv4.ip_forward = 1


이제 방화벽 셋팅 후에 squid 를 시작 및 부팅시에도 시작되게 셋팅해주면 된다.


[root@conoha ~]# systemctl start squid

[root@conoha ~]# systemctl enable squid

Created symlink from /etc/systemd/system/multi-user.target.wants/squid.service to /usr/lib/systemd/system/squid.service.


자 이제 모든게 완료되었으니 테스트를 해보도록 하자.




크롬 브라우저에서 프록시로 접속하는 방법은 http://itrooms.tistory.com/177 여기를 참고하면 된다.




블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

CentOS 7.x root 비밀번호 분실시 초기화 방법



root 패스워드가 생각 안날때 또는 "Give root password for maintenance" 메시지가 뜰때 암호를 초기화 하는 방법이다.


기존 single 이 안먹힐때 아래를 따라하면 된다.


이전에 rw init=/bin/bash 는 문제가 있는 것 같다. rw init=/sysroot/bin/sh 로 변경


아래처럼 해주면 된다.


CentOS 7.2 root 비밀번호 분실시 초기화 방법CentOS 7.2 root 비밀번호 분실시 초기화 방법 콘솔 부팅시 e 키를 누른다.


콘솔에서 부팅시 위 화면에서 키보드에서 e 키를 누르자.



CentOS 7.2 root 비밀번호 분실시 초기화 방법CentOS 7.2 root 비밀번호 분실시 초기화 방법 ro rhgb quitet 부분을 찾는다.


커서를 아래로 내려서 위의 내용(ro) 부분을 찾아서 아래처럼 수정 해주자.



ro 를


rw init=/sysroot/bin/sh 로 변경하고 Ctrl+x 버튼을 누르자.



부팅이 되고 위 화면에서


chroot /sysroot


passwd root


비밀번호 변경후에

touch /.autorelabel


약간 시간 딜레이 후에

exit


이제 재부팅이 되면 변경된 비밀번호로 로그인이 가능하다.



블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,