web-dev-qa-db-ja.com

シェルスクリプト-mysqlデータベースを作成します

次のようなシェルスクリプトを作成しようとしています。

  • mYSQLが実行されているリモートサーバーに接続します
  • 成功したら、「CREATEDATABASEfoo;」を実行します。

これまで私が試した:

#!/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

ありがとう、アレックス

4
Alex

まず、-pと実際のパスワードの間にスペースを入れないでください。

次に、ドキュメントからわかる限り、-eスイッチをオンにすると、最初の部分の直後にコマンドを追加できます。

したがって、最終結果は次のようになります。

#!/bin/bash
mysql -h 111.11.11.11 -uroot -pPASSWORD -e "CREATE DATABASE foo;"
3

このタイプのタスクにはmysqladminコマンドを使用します。

mysqladmin -u root -pPASSWORD create foo
5
stew

あなたはそれのように-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
2
profy

信じられないかもしれませんが、mysqlにログインせずにデータベースを作成できます。

たとえば、fooというDBを作成するには、次のことを試してください。

cd /var/lib/mysql
mkdir foo
chown mysql:mysql foo

そして、あなたは完了です!

1
RolandoMySQLDBA