sql >> Databáze >  >> RDS >> Mysql

Jak přejmenovat databázi v MySQL

V některých případech může být žádoucí rychle změnit název databáze MySQL. Zatímco dříve existoval jednoduchý RENAME DATABASE příkaz ve starších verzích MySQL, který byl určen k provedení této úlohy, RENAME DATABASE byl od té doby odstraněn ze všech novějších verzí, aby se předešlo bezpečnostním rizikům.

Místo toho stručně prozkoumáme několik volitelných metod, které lze použít k rychlému a bezpečnému přejmenování vaší databáze MySQL.

Dumping a zpětný import

Při práci s relativně malou databází je obvykle nejrychlejší metodou použití mysqldump příkaz shell k vytvoření výpisu kopie celé databáze, poté importujte všechna data do nově vytvořené databáze se správným názvem.

Začněte vydáním následujícího mysqldump příkaz z příkazového řádku, který nahradí příslušné username , password a oldDbName hodnoty. mysqldump se používá k vytváření fyzických záloh databáze, takže tuto kopii můžeme použít k importu dat zpět do nové databáze.

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

Používáme -p příznak bezprostředně následovaný naším heslem pro připojení k databázi (bez mezery mezi nimi) a vyhnout se výzvám k zadání hesla při vydávání těchto příkazů. Nezapomeňte ponechat okolní uvozovky, protože hesla s jedinečnými znaky mohou jinak způsobit problémy se spuštěním. -R příznak je také důležitý a říká mysqldump kopírovat uložené procedury a funkce spolu s normálními daty z databáze.

Dále použijte mysqladmin příkaz k vytvoření nové databáze:

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

Nakonec s novou databází použijte mysql importovat soubor výpisu, který jsme vytvořili, do nové databáze.

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

Tři základní příkazy a vaše nová databáze byla vytvořena. Jakmile ověříte, že je vše v pořádku, můžete pokračovat v odstraňování staré databáze.

Přejmenování tabulek pomocí InnoDB

Pokud používáte MySQL verze 5.5 (nebo vyšší), pravděpodobně používáte úložiště InnoDB, díky kterému je přejmenování databází docela jednoduché.

Stručně řečeno, můžete použít RENAME TABLE příkaz v rámci výzvy MySQL k efektivní změně názvu databáze konkrétní tabulky při zachování názvu tabulky beze změny. To však vyžaduje, aby databáze s novým názvem již existovala, takže začněte vytvořením nové databáze pomocí mysqladmin příkaz shell, jak je vidět výše.

Například pokud již máme catalog databázi, kterou chceme přejmenovat na library , nejprve bychom vytvořili novou library databáze:

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

Nyní se připojte k mysql a zadejte následující MySQL RENAME TABLE výpis pro tabulku dle vašeho výběru:

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

Právě jsme přesunuli celé books tabulky z catalog databáze do naší nové library databáze. Tento příkaz lze podle potřeby provést ručně pro všechny relevantní tabulky, nebo můžeme úlohu zjednodušit pomocí skriptu shellu, jak je vidět níže.

Použití příkazového skriptu Shell

Pro všechny databáze kromě nejmenších ručně zadejte RENAME TABLE příkazy pro každou tabulku nebudou příliš praktické ani efektivní, ale naštěstí můžeme použít jednoduchý příkaz shell pomocí mysql nástroj pro procházení všech tabulek v naší staré databázi a jejich přejmenování, čímž je přesunete do nové databáze.

Toto je základní struktura příkazu:

$ 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

Tedy pro náš přechod ze starého catalog databáze do nové library databázi, změnili bychom prohlášení následovně:

$ 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

Do našich příkazů jsme také přidali několik příznaků:

  • -s je příznak pro silent mode takže je méně výstupu do shellu.
  • -N zabraňuje výstupu názvů sloupců z výsledků.
  • -e označuje příkaz, který následuje za -e příznak by měl být spuštěn pak se shell opustí. To znamená příkazy 'show tables' a "RENAME TABLE catalog.$table TO library.$table" jsou podle potřeby prováděny jako normální příkazy SQL.

To je vše. Vaše databáze MySQL je nyní efektivně přejmenována.


  1. Přenos dat z jedné databáze do jiné databáze

  2. Naučte se základní SQL dotazy pomocí MySQL

  3. SQL Server Sledování běžících dotazů

  4. Jak efektivně používat MySQLDB SScursor?