Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách đổi tên cơ sở dữ liệu trong MySQL

Trong một số trường hợp, bạn có thể nhanh chóng thay đổi tên của cơ sở dữ liệu MySQL. Mặc dù đã từng tồn tại một RENAME DATABASE đơn giản trong các phiên bản MySQL cũ hơn nhằm thực hiện tác vụ này, RENAME DATABASE kể từ đó đã bị xóa khỏi tất cả các phiên bản mới hơn để tránh rủi ro bảo mật.

Thay vào đó, chúng ta sẽ khám phá ngắn gọn một số phương pháp tùy chọn có thể được sử dụng để đổi tên cơ sở dữ liệu MySQL của bạn một cách nhanh chóng và an toàn.

Bán phá giá và nhập lại

Khi làm việc với một cơ sở dữ liệu tương đối nhỏ, phương pháp nhanh nhất thường là sử dụng mysqldump lệnh shell để tạo một bản sao đã kết xuất của toàn bộ cơ sở dữ liệu, sau đó nhập tất cả dữ liệu vào cơ sở dữ liệu mới được tạo với tên riêng.

Bắt đầu bằng cách phát hành mysqldump sau lệnh từ lời nhắc trình bao của bạn, thay thế username thích hợp , passwordoldDbName các giá trị. mysqldump được sử dụng để tạo bản sao lưu vật lý của cơ sở dữ liệu, vì vậy chúng tôi có thể sử dụng bản sao này để nhập dữ liệu trở lại cơ sở dữ liệu mới.

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

Chúng tôi đang sử dụng -p gắn cờ ngay sau mật khẩu của chúng tôi để kết nối với cơ sở dữ liệu (không có khoảng cách giữa) và tránh các lời nhắc nhập mật khẩu khi thực hiện các lệnh này. Hãy chắc chắn để lại các trích dẫn xung quanh vì mật khẩu có các ký tự duy nhất có thể gây ra sự cố thực thi. -R cờ cũng quan trọng và nói với mysqldump để sao chép các thủ tục và chức năng được lưu trữ cùng với dữ liệu bình thường từ cơ sở dữ liệu.

Tiếp theo, sử dụng mysqladmin lệnh tạo cơ sở dữ liệu mới:

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

Cuối cùng, với cơ sở dữ liệu mới được tạo, hãy sử dụng mysql để nhập tệp kết xuất mà chúng tôi đã tạo vào cơ sở dữ liệu mới.

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

Ba lệnh cơ bản và cơ sở dữ liệu mới của bạn đã được tạo. Sau khi đã xác minh mọi thứ như dự kiến, bạn có thể tiếp tục xóa cơ sở dữ liệu cũ.

Đổi tên bảng bằng InnoDB

Nếu bạn đang sử dụng MySQL phiên bản 5.5 (hoặc cao hơn), bạn có thể đang sử dụng công cụ lưu trữ InnoDB, công cụ này làm cho nhiệm vụ đổi tên cơ sở dữ liệu khá đơn giản.

Tóm lại, bạn có thể sử dụng RENAME TABLE lệnh trong lời nhắc MySQL để thay đổi hiệu quả tên cơ sở dữ liệu của một bảng cụ thể trong khi vẫn giữ nguyên tên bảng. Tuy nhiên, làm như vậy yêu cầu cơ sở dữ liệu có tên mới đã tồn tại, vì vậy hãy bắt đầu bằng cách tạo cơ sở dữ liệu mới bằng cách sử dụng mysqladmin lệnh shell như đã thấy ở trên.

Ví dụ:nếu chúng ta đã có một catalog cơ sở dữ liệu mà chúng tôi muốn đổi tên thành library , trước tiên chúng tôi sẽ tạo library mới cơ sở dữ liệu:

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

Bây giờ hãy kết nối với mysql nhắc và đưa ra MySQL RENAME TABLE sau tuyên bố cho một bảng bạn chọn:

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

Chúng tôi vừa chuyển toàn bộ books bảng từ catalog cơ sở dữ liệu vào library mới của chúng tôi cơ sở dữ liệu. Lệnh này có thể được thực thi theo cách thủ công cho tất cả các bảng có liên quan như mong muốn hoặc chúng ta có thể đơn giản hóa tác vụ bằng một tập lệnh shell như được thấy bên dưới.

Sử dụng Shell Command Script

Đối với tất cả trừ các cơ sở dữ liệu nhỏ nhất, phát hành RENAME TABLE theo cách thủ công các lệnh cho mỗi bảng sẽ không thực tế và cũng không hiệu quả, nhưng may mắn thay, chúng ta có thể sử dụng một lệnh shell đơn giản bằng cách sử dụng mysql tiện ích để lặp qua tất cả các bảng trong cơ sở dữ liệu cũ của chúng tôi và đổi tên chúng, do đó chuyển chúng sang cơ sở dữ liệu mới.

Đây là cấu trúc cơ bản của lệnh:

$ 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

Do đó, đối với việc di chuyển của chúng tôi từ catalog cũ cơ sở dữ liệu đến library mới cơ sở dữ liệu, chúng tôi sẽ thay đổi tuyên bố như sau:

$ 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

Chúng tôi cũng đã thêm một số cờ vào lệnh của mình:

  • -s là lá cờ cho silent mode do đó, có ít đầu ra hơn cho trình bao.
  • -N ngăn việc xuất tên cột khỏi kết quả.
  • -e chỉ ra câu lệnh theo sau -e cờ phải được thực thi sau đó vỏ được bỏ. Điều này có nghĩa là các câu lệnh 'show tables'"RENAME TABLE catalog.$table TO library.$table" được thực thi như các câu lệnh SQL bình thường, như mong muốn.

Thats tất cả để có nó. Cơ sở dữ liệu MySQL của bạn hiện đã được đổi tên hiệu quả.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ về UTC_TIMESTAMP () - MySQL

  2. Giám sát hiệu suất MySQL với ClusterControl

  3. MySQL, Kiểm tra xem một cột có tồn tại trong bảng với SQL hay không

  4. Cách cài đặt MySQL trên Debian 8

  5. Thiết lập MySQL InnoDB Cluster với MySQL Shell (cùng với MySQL Router)