Q&A

쉘스크립트를 만들고자 합니다.

 

1. 루트 권한으로 mysql 에 접속

# mysql -u root -p

# 패스워드 입력

 

2. 신규 데이터베이스 생성

mysql> CREATE DATABASE 데이터베이스명;

 

3. 생성된 데이터베이스를 기존 유저에 연결시키기

GRANT ALL PRIVILEGES ON 데이터베이스명.* to 기존유저@localhost;

 

이런 식의 작업을 직접 입력하는데요, 이걸 쉘스크립트로 작성하고 싶습니다. 

이런 쉘스크립트는 어디서 배워야 하나요 ㅠ;

이온디 Lv. 13
# 라이믹스 스킨 제작은 어디? >>>> XE 레이아웃, 라이믹스 스킨제작은 이온디에서 커스터마이징해드립니다.
# 빠른 라이믹스 커뮤니티용 호스팅을 찾고 계신가요? >>>> 이온디호스팅 서비스는 PHP8 & Redis 서버 캐시를 활용하여 라이믹스에 최적화된 호스팅 서비스를 제공해드립니다. (서버세팅시 웹패널, 내도메인메일서비스도 함께 구축해드립니다.)
https://eond.com

댓글 5

  • 일단 쉘스크립트에서 쿼리를 실행하려면 mysql -e 옵션을 사용할 수 있습니다.

    mysql -uroot -p비번 -e "쿼리"

     

    쉘스크립트에서 변수를 사용할 수도 있습니다. 예를 들어 ./foo.sh hello world 라고 명령을 내리면

    hello는 $1, world는 $2라는 변수에 저장됩니다.

    mysql -uroot -p비번 -e "CREATE DATABASE $1"

    mysql -uroot -p비번 -e "GRANT ALL PRIVILEGES ON $1.* TO $2@localhost"

    $1이 디비명이고 $2가 유저라면 이런 식으로 쓸 수 있겠지요.

     

    비번을 ~/.my.cnf 파일에 저장해 놓고 다른 유저들이 볼 수 없도록 퍼미션 600으로 해놓으면

    -p비번 옵션을 사용하거나 매번 비번을 입력하지 않고도 100% 자동화가 가능합니다.

     

    이런 기법들을 조합하면 쉘스크립트로도 디비를 자유롭게 조작할 수 있고,

    bash 튜토리얼을 찾아서 좀 읽어보시면 훨씬 강력한 기능을 구현할 수도 있습니다.

    예를 들어 유저 이름이 틀리면 에러를 뿜는다거나... 입력하지 않은 변수에 기본값을 지정한다거나...

     

    단점이라면 bash 문법이 워낙 지저분해서ㅜㅜ 차라리 PHP가 아름다워 보일 정도지요.

    저도 서버작업하면서 bash를 많이 쓰게 되는데, 이게 아무래도 귀찮다 보니

    좀 복잡한 것은 #!/usr/bin/php로 시작하기도 합니다 ㅋㅋㅋ

  • @기진곰
    아 실제 서버에 있는 쉘스크립트 파일과 말씀하신 것을 보니 좀 이해가 됩니다.
    감사합니다. ^^;
  • @기진곰
    1. newaccount.sh 파일과 newaccount 폴더를 생성해서 서버에 있는 소스 그대로 붙어줬습니다.
    2. 해당 파일 퍼미션을 755로 설정해서 퍼미션 문제를 해결했습니다.
    3. ./newaccount.sh ID Domain.com 을 입력하니,

    -bash: ./newaccount.sh: /bin/bash^M: bad interpreter: No such file or directory

    이렇게 나옵니다. 뭘 더 추가해주어야 하나요?
  • @이온디
    윈도우 메모장에서 편집하시면 안됩니다. 줄바꿈이 CRLF로 들어가면 bash가 인식을 못해요.
  • @기진곰
    dos2unix 명령어로 해결했습니다^^
    감사합니다.