커맨드 라인에서 모든 MySQL 테이블을 삭제하는 방법은 무엇입니까?


29

일반적으로 Terminal.app을 열고 원격 MySQL 데이터베이스에 연결합니다.

그런 다음이 명령을 사용하여 테이블을 삭제합니다.

mysql> drop table [table name];

그러나 필요한 것은 데이터베이스의 모든 테이블을 삭제하는 명령 줄입니다.

내가 사용하는 경우 :

mysql> drop database [database name];

데이터베이스를 완전히 파괴하면 테이블을 다시 만들 수 없습니다. 내가 맞아?


답변:


27

데이터베이스를 삭제 한 후 즉시 다시 작성할 수 있습니다.

mysql> drop database [database name];
mysql> create database [database name];

또는 스크립트를 사용하여 데이터베이스에서 각 테이블을 삭제 (drop) 할 수 있습니다.


다음과 같이 터미널의 원격 데이터베이스에 연결하십시오. / Applications / MAMP / Library / bin / mysql -h 80.54.554.10 -u adm_user -p my_db . 당신이 말한대로 데이터베이스를 삭제하고 만든 후에이 연결 값을 변경해야합니까, 아니면 그대로 유지됩니까?
chefnelone

1
@chef-모든 테이블을 삭제하고 전체 데이터베이스를 삭제해도 동일한 효과가 없습니다. 테이블 만 삭제하면 데이터베이스 전체 권한은 그대로 유지되며 데이터베이스를 삭제 / 재 작성하면 그렇지 않습니다.
Nifle

10
@ chefnelone : 조심하세요! 데이터베이스를 삭제하면 저장 프로 시저 및 사용자 정의보기도 삭제됩니다.
RolandoMySQLDBA 1

나에게 분명하다. 스크립트를 사용하여 각 테이블을 삭제하겠습니다.
chefnelone

1
그것은 완전히 안전하지
않다

10

다음 명령을 시도 할 수 있습니다.

mysqldump --no-data --add-drop-table DB_NAME | grep ^DROP | mysql -v DB_NAME

또는:

mysql --silent --skip-column-names -e "SHOW TABLES" DB_NAME | xargs -L1 -I% echo 'DROP TABLE `%`;' | mysql -v DB_NAME

DB_NAME데이터베이스 이름은 어디에 있습니까 ? 데이터베이스 자격 증명을 지정하거나 ~/.my.cnf명령에 추가 할 수 있습니다 (예 :) -uroot -proot.

이 방법은 데이터베이스 사용자에게 데이터베이스를 삭제할 권한이없는 경우 데이터베이스를 삭제하고 작성하는 것보다 몇 가지 장점이 있습니다.


1
두 번째 예를 확인했습니다. 전에 추가 플래그로 DB 자격 증명을 추가 --silent하고 -v/ --verbose각각 같은 :--user=username --password=password --host=host.name
여기

좋은 생각. 그러나 FOREIGN KEY가있을 때 약간의 문제가 있습니다. | sort -r역행에 추가 했지만 여전히 일부 DB와 호환되지 않습니다.
Fancyoung

2

mysql -u USERHERE -pPASSWORDHERE --silent --skip-column-names -e "SHOW TABLES" DATABASENAMEHERE | xargs -L1 -I% echo 'SET FOREIGN_KEY_CHECKS = 0; DROP TABLE%;' | mysql -u USERHERE -pPASSWORDHERE -v DATABASENAMEHERE


2
슈퍼 유저에 오신 것을 환영합니다! 이것이 질문에 대한 답변이 될 수 있지만, 그 이유를 설명 할 수 있다면 더 나은 답변이 될 것 입니다. 우리는 설명과 맥락을 제공하는 포괄적이고 고품질의 답변을 찾고 있습니다. 한 줄만 대답하지 마십시오. 인용에 이상적으로 답이 맞는 이유를 설명하십시오. 설명이 포함되지 않은 답변은 제거 될 수 있습니다. 또한 형식을 확인하십시오.
G-Man, 'Reinstate

드롭 테이블 후 세트 FOREIGN_KEY_CHECKS = 1을 잊지 : 참조 stackoverflow.com/a/2873991/4306855 mysql을 -u USERHERE -pPASSWORDHERE --silent --skip-열 이름은 "쇼 테이블을"-e DATABASENAMEHERE | xargs -L1 -I % 에코 'SET FOREIGN_KEY_CHECKS = 0; DROP TABLE %; SET FOREIGN_KEY_CHECKS = 1; ' | mysql -u USERHERE -pPASSWORDHERE -v DATABASENAMEHERE
toto21
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.