Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2863

【MySQL】シェルスクリプトでMySQLのSQLを実行する

$
0
0
シェルスクリプトでMySQLのSQLを動かそうとしたら詰まりに詰まったので備忘録として やりたいこと ・ rootユーザでシェルスクリプトからmysqlのSQLを実行する ・ 対話処理は悲しいのでやりたくない 環境 ・ホストOS: Windows11 ・ゲストOS: Ubuntu20.04 ・MySQL 8.0.26 ・bash ソースコード #!/bin/bash service mysql start mysql -u root --password='password' -e "drop database if exists dbname;" mysql -u root --password='password' -e "create database dbname;" mysql -u root --password='password' dbname < file.sql このシェルスクリプトを実行すると mysql: [Warning] Using a password on the command line interface can be insecure. という警告文が表示されて処理が失敗しました。 どうやらスクリプトやコマンドにパスワードを直書きすると怒られるようです。 解決方法 パスワードを外部ファイルに切り出してそれを --defaults-extra-file オプションで読み込むと解消できました。 /etc/mysql/my.cnf [client] user = root password = password # 今回はスクリプトを実行するホストとDBのホストが同一なのでhostnameは省略 パスワードが書かれたファイルなので権限は最低限にしておきます。 chmod 600 /etc/mysql/my.cnf スクリプトを以下のように書き換えて再度実行します。 create_database.sh service mysql start mysql --defaults-extra-file=/etc/mysql/my.cnf -u root -e "drop database if exists dbname;" mysql --defaults-extra-file=/etc/mysql/my.cnf -u root -e "create database dbname;" mysql --defaults-extra-file=/etc/mysql/my.cnf -u root dbname < file.sql 警告が出ずに正常にデータベースが作成されました。 まとめ この方法だと自動でデータベースを操作できるので定期的なバックアップやデータベースのメンテナンスも実現できそうですね。

Viewing all articles
Browse latest Browse all 2863

Trending Articles