쉘 명령에서 데이터베이스를 작성하는 방법은 무엇입니까?


175

PostgreSQL에서 createdb와 같은 것을 찾고 있거나 쉘 명령을 사용하여 데이터베이스를 만들 수있는 다른 솔루션을 찾고 있습니다. 힌트가 있습니까?

답변:


172
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
그것은 2 개의 -u깃발 이 있기 때문이다
Stephen

@Kris 터미널에서 데이터베이스 이름을 읽고 데이터베이스 생성에서 변수 값을 데이터베이스 이름으로 사용할 수 있습니까?
CLIFFORD PY

@ Clifford : 일반 쉘 인수를 사용하여 간단한 (ba) sh 스크립트를 사용할 수 있습니다. ( stackoverflow.com/questions/23563043/shell-script-arguments ) 아마도 자체 질문의 장점이 있습니다.
Kris

214

mysql 환경을 의미합니까?

create database testdb;

또는 명령 줄에서 직접 :

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

11
mysql -u root -e "데이터베이스 testdb 생성"; 내가 찾던 것 :) 감사합니다
koszikot

3
비밀번호가있는 경우 -p를 추가하십시오. Enter 키를 누르면 비밀번호를 묻는 메시지가 나타납니다. 다음은 루트 사용자 인 사용자를 사용하는 예이며 (사용자 이름이있는 경우 변경) 데이터베이스에 "oc_local"이라는 이름을 사용합니다 (데이터베이스를 다른 방식으로 호출하려면 변경). ----> mysql -u root -p -e "데이터베이스 oc_local 생성";
pablofiumara

1
안녕 @ koszikot-이것이 당신이 찾고있는 것이라면, 당신은 정답으로 받아 들여야합니다 :-)
thejohnbackes

1
커맨드 라인 옵션의 기능을 알고 싶습니다. 다른 사람들에게는 -e는 --execute = statement의 짧은 형식입니다. 여기 명령 줄 옵션을 찾을 dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html
안토니

70

새 데이터베이스를 작성하는 경우이 데이터베이스에 대해서만 권한이있는 사용자를 작성하는 것이 좋습니다 (문제가 발생하면 루트 사용자 로그인 및 비밀번호가 손상되지 않습니다). 따라서 모든 것이 다음과 같이 보입니다.

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가 모든 권한 (아마 루트)와 사용자의 이름입니다
base_user_pass 이 base_user에 대한 암호입니다 (-p와 base_user_pass 사이의 공간 부족이 중요하다)
new_db가 새로 만든 데이터베이스의 이름입니다
new_db_user 액세스 할 수있는 새 사용자 이름입니다 new_db의 경우에만
new_db_user_pass new_db_user 의 비밀번호입니다.


거대한. 이 큰 라이너를 대시 독 스 니펫에 추가했습니다. 경우에는 사람이 공간과 루트 암호를 가지고 -p"root password here"작품을 잘
hmedia1

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

위의 변수를 바꾸면이 oneliner를 사용하는 것이 좋습니다. $ USER는 사용자 이름이고 $ PASSWORD는 암호이며 $ DB_NAME은 데이터베이스 이름입니다.


1
몇 년 후이 질문으로 돌아와서 내가 그것을 찬성했다는 것을 알아 차렸다 : D
Isaac

20

사용하다

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

비밀번호를 묻는 메시지가 나타납니다. 또한 사용하는 mysql 사용자에게 데이터베이스 작성 권한이 있는지 확인하십시오.


12

ist와 두 번째 대답은 좋지만 누군가 스크립트를 찾고 있거나 동적 인 경우 (예 : 변수의 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'";


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.