Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zmienić nazwę bazy danych w MySQL?

W niektórych przypadkach może być pożądana szybka zmiana nazwy bazy danych MySQL. Kiedyś istniała prosta RENAME DATABASE polecenie w starszych wersjach MySQL, które było przeznaczone do wykonania tego zadania, RENAME DATABASE został usunięty ze wszystkich nowszych wersji, aby uniknąć zagrożeń bezpieczeństwa.

Zamiast tego krótko omówimy kilka opcjonalnych metod, których można użyć do szybkiej i bezpiecznej zmiany nazwy bazy danych MySQL.

Zrzucanie i ponowne importowanie

Podczas pracy ze stosunkowo małą bazą danych najszybszą metodą jest zazwyczaj użycie mysqldump polecenie powłoki, aby utworzyć zrzuconą kopię całej bazy danych, a następnie zaimportować wszystkie dane do nowo utworzonej bazy danych o odpowiedniej nazwie.

Zacznij od wydania następującego mysqldump polecenie z wiersza poleceń powłoki, zastępując odpowiednią username , password i oldDbName wartości. mysqldump służy do tworzenia fizycznych kopii zapasowych bazy danych, więc możemy użyć tej kopii do zaimportowania danych z powrotem do nowej bazy danych.

$ mysqldump -u username -p"password" -R oldDbName > oldDbName.sql

Używamy -p natychmiast po której następuje nasze hasło, aby połączyć się z bazą danych (bez spacji) i uniknąć monitów o wprowadzenie hasła podczas wydawania tych poleceń. Pamiętaj, aby pozostawić otaczające cytaty, ponieważ hasła z unikalnymi znakami mogą w przeciwnym razie powodować problemy z wykonaniem. -R flaga jest również ważna i mówi mysqldump skopiować procedury i funkcje składowane wraz z normalnymi danymi z bazy danych.

Następnie użyj mysqladmin polecenie do utworzenia nowej bazy danych:

$ mysqladmin -u username -p"password" create newDbName

Wreszcie, po utworzeniu nowej bazy danych użyj mysql aby zaimportować utworzony przez nas plik zrzutu do nowej bazy danych.

$ mysql -u username -p"password" newDbName < oldDbName.sql

Utworzono trzy podstawowe polecenia i nową bazę danych. Po sprawdzeniu, czy wszystko jest zgodne z przeznaczeniem, możesz kontynuować usuwanie starej bazy danych.

Zmiana nazw tabel za pomocą InnoDB

Jeśli używasz MySQL w wersji 5.5 (lub nowszej), prawdopodobnie używasz silnika pamięci masowej InnoDB, co sprawia, że ​​zmiana nazwy baz danych jest dość prosta.

W skrócie, możesz użyć RENAME TABLE polecenie w wierszu MySQL, aby skutecznie zmienić nazwę bazy danych konkretnej tabeli, zachowując nazwę tabeli nienaruszoną. Jednak wykonanie tego wymaga, aby baza danych o nowej nazwie już istniała, więc zacznij od utworzenia nowej bazy danych za pomocą mysqladmin polecenie powłoki, jak pokazano powyżej.

Na przykład, jeśli mamy już catalog baza danych, której nazwę chcemy zmienić na library , najpierw utworzymy nową library baza danych:

$ mysqladmin -u username -p"password" create library

Teraz połącz się z mysql zapytaj i wydaj następujący MySQL RENAME TABLE oświadczenie dla wybranego stołu:

mysql> RENAME TABLE catalog.books TO library.books;

Właśnie przenieśliśmy wszystkie books tabela z catalog bazy danych do naszej nowej library Baza danych. To polecenie można wykonać ręcznie dla wszystkich odpowiednich tabel, zgodnie z potrzebami, lub możemy uprościć zadanie za pomocą skryptu powłoki, jak pokazano poniżej.

Korzystanie ze skryptu poleceń powłoki

W przypadku wszystkich baz danych oprócz najmniejszych ręczne wydawanie RENAME TABLE polecenia dla każdej tabeli nie będą zbyt praktyczne ani wydajne, ale na szczęście możemy użyć prostego polecenia powłoki za pomocą mysql narzędzie do przeglądania wszystkich tabel w naszej starej bazie danych i zmiany ich nazw, a tym samym przeniesienia ich do nowej bazy danych.

Oto podstawowa struktura polecenia:

$ mysql -u dbUsername -p"dbPassword" oldDatabase -sNe 'show tables' | while read table; do mysql -u dbUsername -p"dbPassword" -sNe "RENAME TABLE oldDatabase.$table TO newDatabase.$table"; done

Tak więc dla naszego przejścia ze starego catalog bazy danych do nowej library bazy danych, zmienilibyśmy oświadczenie w następujący sposób:

$ mysql -u dbUsername -p"dbPassword" catalog -sNe 'show tables' | while read table; do mysql -u dbUsername -p"dbPassword" -sNe "RENAME TABLE catalog.$table TO library.$table"; done

Dodaliśmy również kilka flag do naszych poleceń:

  • -s jest flagą dla silent mode więc jest mniej danych wyjściowych do powłoki.
  • -N zapobiega wyświetlaniu nazw kolumn z wyników.
  • -e wskazuje instrukcję następującą po -e flaga powinna zostać wykonana wtedy powłoka zostaje zamknięta. Oznacza to, że instrukcje 'show tables' i "RENAME TABLE catalog.$table TO library.$table" są wykonywane jako normalne instrukcje SQL, zgodnie z potrzebami.

To wszystko. Twoja baza danych MySQL została teraz skutecznie zmieniona.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Errno 150

  2. Co oznacza słowo kluczowe KLUCZ?

  3. Alternatywy MySQL Workbench — GUI typu „wskaż i kliknij” ClusterControl

  4. MySQL automatycznie rzutuje/konwertuje ciąg na liczbę?

  5. Unikalne ograniczenie, które pozwala na puste wartości w MySQL