シェルコマンドからデータベースを作成する方法


175

PostgreSQLのcreatedbのようなもの、またはシェルコマンドを使用してデータベースを作成できる他のソリューションを探しています。ヒントはありますか?

回答:


173
cat filename.sql | mysql -u username -p # type mysql password when asked for it

ここで、filename.sqlは、データベースを作成するためのすべてのsqlを保持します。または...

echo "create database `database-name`" | mysql -u username -p

本当にデータベースを作成したいだけの場合。


2
27行目でこのエラーERROR 1046(3D000)が発生します:echo "create database databasename"を実行するとデータベースが選択されません| mysql -u -u username -pコマンド
keerthi

@keerthi:おそらくあなたのユーザーは既存のスキーマに対する特権を持っていませんか?
Kris

2
これは、-uフラグが2つあるためです
スティーブン

@Kris端末からデータベース名を読み取り、データベース作成で変数値をデータベース名として使用できますか。
CLIFFORD PY

@Clifford:通常のシェル引数を使用して、単純な(ba)shスクリプトを使用できます。(stackoverflow.com/questions/23563043/shell-script-arguments)おそらく独自の質問に値します。
クリス

213

MySQLの環境を意味しますか?

create database testdb;

またはコマンドラインから直接:

mysql -u root -e "create database testdb"; 

11
mysql -u root -e "create database testdb"; それが私が探していたものです:)ありがとう
koszikot

3
パスワードがある場合は、-pを追加します。Enterキーを押すと、パスワードの入力を求められます。以下は、rootである私のユーザーを使用する例です(注釈付きのユーザー名がある場合は変更します)。また、データベースに「oc_local」という名前を使用します(データベースを別の方法で呼び出す場合は変更します)- ----> mysql -u root -p -e "データベースの作成oc_local";
pablofiumara 2013年

1
こんにちは@koszikot-これがあなたが探していたものである場合は、それを正しい答えとして受け入れる必要があります:-)
thejohnbackes

1
コマンドラインオプションの機能を知りたいのですが、他の人にとっては-eは--execute = statementの省略形です。コマンドラインオプションはこちらdev.mysql.com/doc/refman/8.0/en/mysql-command-options.html
Anthony

70

新しいデータベースを作成する場合は、このデータベースに対してのみ権限を持つユーザーを作成することをお勧めします(何か問題が発生しても、rootユーザーのログインとパスワードを危険にさらすことはありません)。したがって、すべてが次のようになります。

mysql -u base_user -pbase_user_pass -e "create database new_db; GRANT ALL PRIVILEGES ON new_db.* TO new_db_user@localhost IDENTIFIED BY 'new_db_user_pass'"

ここで、
base_userはすべての特権を持つユーザー(おそらくroot)の
名前ですbase_user_passこれはbase_userのパスワードです(-pとbase_user_passの間のスペースの不足が重要です)
new_dbは新しく作成されたデータベースの名前です
new_db_userはアクセス権を持つ新しいユーザーの名前ですnew_db
new_db_user_passの場合のみ、new_db_user のパスワードです。


大規模です。この素晴らしいワンライナーをdashdocsスニペットに追加しました。スペースを含むrootパスワードを持っている場合:-p"root password here"
正常に

37
mysqladmin -u$USER -p$PASSWORD create $DB_NAME

上記の変数を置き換えると、このワンライナーを使用することができます。$ USERはユーザー名、$ PASSWORDはパスワード、$ DB_NAMEはデータベースの名前です。


1
何年も後にこの質問に戻って、私がそれを賛成したことに気づきました:D
アイザック

20

使用する

$ mysqladmin -u <db_user_name> -p create <db_name>

パスワードの入力を求められます。また、使用するmysqlユーザーにデータベースを作成する権限があることを確認してください。


12

istと2番目の答えは良いですが、誰かがスクリプトを持っていることを探している場合、または動的なIE(変数のdb / username / password)が必要な場合は、ここにあります:

#!/bin/bash



DB="mydb"
USER="user1"
PASS="pass_bla"

mysql -uroot -prootpassword -e "CREATE DATABASE $DB CHARACTER SET utf8 COLLATE utf8_general_ci";
mysql -uroot -prootpassword -e "CREATE USER $USER@'127.0.0.1' IDENTIFIED BY '$PASS'";
mysql -uroot -prootpassword -e "GRANT SELECT, INSERT, UPDATE ON $DB.* TO '$USER'@'127.0.0.1'";


2

基本ユーザーを使用してDBに接続します。 mysql -u base_user -pbase_user_pass 、CREATE DATABASE、CREATE USER、およびGRANT PRIVILEGESステートメントを実行します。

これは、ステートメントを支援する便利なWebウィザードです www.bugaco.com/helpers/create_database.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.