次のようなシェルスクリプトを作成しようとしています。
これまで私が試した:
#!/bin/bash
mysql -h 111.11.11.11 -u root -p'XXXXXXX'
mysql> CREATE DATABASE foo;
または
echo "CREATE DATABASE foo;";
しかし、成功しません。
コマンドラインを使用してシェルスクリプトを実行しています。
# sh create_mysql_database.sh
しかし、それが行うのは、mysqlに接続して入力を待つように強制することだけであり、それだけです。
誰もが実際にこれを達成する方法を知っていますか?
Server:
Centos 6.2
MySQL client version: 5.1.61
ありがとう、アレックス
まず、-p
と実際のパスワードの間にスペースを入れないでください。
次に、ドキュメントからわかる限り、-eスイッチをオンにすると、最初の部分の直後にコマンドを追加できます。
したがって、最終結果は次のようになります。
#!/bin/bash
mysql -h 111.11.11.11 -uroot -pPASSWORD -e "CREATE DATABASE foo;"
このタイプのタスクにはmysqladmin
コマンドを使用します。
mysqladmin -u root -pPASSWORD create foo
あなたはそれのように-eオプションを使うべきです:
#!/bin/bash
mysql -h 111.11.11.11 -uroot -pPASSWORD -e "CREATE DATABASE foo;"
または:
#!/bin/bash
SQL="CREATE DATABASE foo;"
mysql -h 111.11.11.11 -uroot -pPASSWORD <<<$SQL
信じられないかもしれませんが、mysqlにログインせずにデータベースを作成できます。
たとえば、foo
というDBを作成するには、次のことを試してください。
cd /var/lib/mysql
mkdir foo
chown mysql:mysql foo
そして、あなたは完了です!