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

MySQL có thể khôi phục đáng tin cậy các bản sao lưu có chứa các khung nhìn hay không?

Câu hỏi này hơi cũ, nhưng tôi vừa lãng phí vài giờ để giải quyết cùng một vấn đề, vì vậy tôi đoán một lời giải thích rõ ràng có thể hữu ích cho ai đó trong tương lai ...

Để cắt theo đuổi:Vấn đề là ở trường DEFINER trong kết xuất mysql của bạn. Nó trông giống như sau:

/*!50013 DEFINER=`some_user`@`localhost` SQL SECURITY DEFINER */

Vấn đề là đây * [email protected] * sẽ luôn được mã hóa cứng cho tài khoản người dùng đã được sử dụng để tạo chế độ xem trong DB ban đầu và KHÔNG người dùng mà bạn đã sử dụng để xuất hoặc nhập cơ sở dữ liệu như mong đợi (hoặc ít nhất là tôi đã làm như vậy). Và sau đó, trong quá trình nhập, người dùng này sẽ được sử dụng để tạo lại chế độ xem.

Vì vậy, bạn có thể xuất / nhập dưới dạng root, nhưng nếu DB gốc đang chạy dưới quyền người dùng khác và nó không có quyền TẠO CHẾ ĐỘ XEM trong cơ sở dữ liệu mới, thì quá trình nhập sẽ không thành công.

Bạn có hai giải pháp đơn giản:

  1. Tìm kiếm và thay thế tất cả các tham chiếu đến some_user @ localhost trong tệp kết xuất của bạn với người dùng mới (người bạn sử dụng để nhập kết xuất, ví dụ: example @ sqldat.com )
  2. Hoặc bạn có thể cấp cho * some_user * các quyền thích hợp trên cơ sở dữ liệu mới để có thể tạo các chế độ xem trong tài khoản của anh ấy

Dù bằng cách nào cũng sẽ khắc phục được sự cố, nhưng tôi nghĩ cách tiếp cận đầu tiên là cách tốt hơn và rõ ràng hơn, vì bạn không phải lo lắng về nhiều người dùng trong tương lai.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. python 3.5 - django 1.10 - lỗi cài đặt mysqlclient windows 7

  2. CHÈN nhiều bản ghi bằng bản ghi hoạt động ruby ​​on rails

  3. Chuyển từ MySQL sang PostgreSQL - Điều bạn nên biết

  4. MySQL pid đã kết thúc (không thể khởi động mysql)

  5. Làm cách nào để tạo truy vấn động bằng các tham số ràng buộc trong node.js-sql?