LoginSignup
1
1

More than 1 year has passed since last update.

記事1)LinuxスクリプトでのMySQLクエリ(スクリプト初めての方も)

Last updated at Posted at 2021-12-15

初めての記事ですが、LinuxでのスクリプトでMySQLデータベースのレコードの削除やファイル削除などについて共有したいと思います。

◆まずは、Linuxのコマンドを開きます。
Windowsで利用の方は色んなコマンドツールがあると思いますが、私は下記のツールなどを使っています。
 -「Linuxサーバ」PuTTY (https://www.putty.org/)
 -「ロカール環境」Git Bash (https://git-scm.com/downloads)
◆下記のコマンドでスクリプトファイルを作成して試してみましょう

$vim file_name.sh
file_name.sh
#!/bin/bash
echo hello world

保存して、権限を与える

$chmod +x file_name.sh

下記のコマンドで実行してみると hello worldがアウトプットされました。:clap_tone1:

$./file_name.sh

では、さっそくMySQLクエリを実行してみましょう
ロカール環境ではMySQLデータベースを接続するためユーザ名やパスワードなどをスクリプトファイルで直接書いても問題ないですが、LinuxサーバではこのようなWranningが出る場合があります。
mysql: [Warning] Using a password on the command line interface can be insecure.
なので、このように設定ファイルを利用した方が安全です。

$vim mysql_access.cnf
mysql_access.cnf
[client]
user=user_name
password=password

保存して、権限を与えます。

$chmod 600 mysql_access.cnf

そして、スクリプトでMySQLに接続して、データベースのレコードやファイルなどを削除してみます。リクエストIDの設定や確認メッセージなども含めてやっていきたいと思います。

file_name.sh
#!/bin/bash
#MySQL接続
db_name="database_name"
host_name="host_name"
sql_con="mysql --defaults-extra-file=mysql_access.cnf -h $host_name $db_name "
sql_exit="exit;"
#リクエストID設定
read -p "IDを入力してください: " t_id
#確認メッセージ
read -p "データを削除してもよろしいですか?(y/N): " yn
case "$yn" in
[yY]*)
#yes/y の場合DBの存在チェックする
$var1=$($sql_con -se "SELECT id,name,created_date FROM tbl_name WHERE id=$t_id;")
#$var1がNULLかどうかをチェックする「if文には半角スペースは大事です」
 if [ -z "$var1" ]; then
  echo "データが存在しません";
 else
  #SQLクエリのアウトプットを変数に割当します
  read  id name created_date <<< $var1
  #データを削除します。
  $sql_con -se "DELETE FROM tbl_name WHERE id=$id;"
  #ファイルを削除する場合
  file_path="/path/to/file/file_name.ext"
  #ファイル存在チェック
  if [ -e $file_path ]; then
   sudo rm -f $file_path;
  else
   echo "ファイルが見つかりませんでした。";
  fi
  echo "削除しました。";
 fi
;;
*) echo "中止しました。"
;;
esac
#引き続き削除したい場合
read -p "引き続き削除しますか?(y/N)" c_del
case "$c_del" in
 [yY]*)
  ./file_name.sh
 ;
 *)
  echo "終了しました。"
 ;
esac

アウトプット

$ ./file_name.sh
IDを入力してください: 365
データを削除してもよろしいですか? (y/N) : y
削除しました。
引き続き削除しますか?(y/N)y
IDを入力してください: 22
データを削除してもよろしいですか? (y/N) : y
データが存在しません。
引き続き削除しますか?(y/N)n
終了しました。

もしよかったらぜひ試してみてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1