Tôi đang tạo tập lệnh bash, trong số những thứ khác, tập hợp một số dữ liệu từ cơ sở dữ liệu MySQL. Người dùng MySQL của tôi có quyền ghi, nhưng vì lý do an toàn, tôi muốn tạm thời đặt nó vào trạng thái chỉ đọc. Có thể làm điều này từ một dòng lệnh?Làm cách nào để đặt MySQL tạm thời thành chỉ đọc thông qua dòng lệnh?
Trả lời
Để trả lời câu hỏi ban đầu của bạn, bạn có thể đặt toàn bộ cơ sở dữ liệu của bạn để chế độ chỉ đọc của thành viên này lệnh:
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = 1;
và trở lại chế độ bình thường với:
SET GLOBAL read_only = 0;
UNLOCK TABLES;
Hãy coi chừng đây là thao tác có tác động sâu sắc đến hành vi của cơ sở dữ liệu. Vì vậy, trước khi thực hiện điều này, hãy đọc tài liệu có sẵn cho các lệnh ở trên. Một cách phổ biến hơn nhiều là thu hồi đặc quyền DML từ người dùng cụ thể và sau đó cấp lại cho họ.
Câu trả lời hay nhất, nếu OP thực sự muốn đặt toàn bộ cơ sở dữ liệu ở chế độ chỉ đọc. Tiêu đề và câu hỏi thực tế gây nhầm lẫn ở đây. Dù sao, 1 cho giải pháp đơn giản nhất. – fancyPants
Để lưu những người khác một số tìm kiếm, đây là những gì tôi đọc trước khi chơi với những điều này: [read_only global] (https://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_read_only) (bao gồm đề cập đến 'BẢNG FLUSH VỚI READ LOCK;') và [sử dụng các bản sao lưu này] (http://docs.oracle.com/cd/E17952_01/refman-5.5-en/replication-solutions-backups-read-only. html). – sage
Sau khi tôi đã làm phương pháp trên, cơ sở dữ liệu của tôi vẫn ở chế độ Đọc + Ghi. – Phoenix
Vâng, nếu người sử dụng ngay bây giờ có tất cả đặc quyền đầu tiên, bạn cần phải hủy bỏ nó
$>mysql -u DB_USER -pDB_PASS --execute="REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'YOUR_USER';"
Sau đó bạn cho anh ta, sau đó chọn phép
$>mysql -u DB_USER -pDB_PASS --execute="GRANT SELECT ON 'YOUR_DATABASE'@.* TO 'YOUR_USER'@'%';FLUSH PRIVILEGES;"
Do các công cụ và sau đó cấp lại đặc quyền cho người dùng
$>mysql -u DB_USER -pDB_PASS --execute="GRANT ALL ON 'YOUR_DATABASE'@.* TO 'YOUR_USER'@'%';FLUSH PRIVILEGES;"
Và đó là tất cả mọi người
LƯU Ý: Xem xét cho báo giá, có lẽ tôi đã quên một cái gì đó
Nếu bạn đang sử dụng MySQL 5.6 trở lên và InnoDB, bạn có thể thực hiện phiên chỉ đọc.
SET SESSION TRANSACTION READ ONLY;
https://dev.mysql.com/doc/refman/5.6/en/set-transaction.html
"READ ONLY" cũng cung cấp một khiêm tốn performance benefit.
- 1. Tạo người dùng mysql thông qua dòng lệnh linux?
- 2. Làm thế nào để biên dịch Flash .fla thành .swf thông qua dòng lệnh?
- 3. Mysql tạm thời ngăn chặn chỉ số duy nhất
- 4. Làm thế nào để bạn chạy một truy vấn thông qua mysql từ dòng lệnh?
- 5. Làm cách nào để sử dụng MySQL thông qua XAMPP?
- 6. Làm cách nào để truyền chuỗi thô tới các lệnh thông qua dòng lệnh trong PowerShell?
- 7. thời gian thực thi dòng lệnh mysql?
- 8. Làm thế nào để đặt biến môi trường chỉ trong khoảng thời gian của tập lệnh?
- 9. Làm cách nào để đặt mức log4j trên dòng lệnh?
- 10. chạy tập lệnh csh từ bash, thay đổi shell tạm thời qua lệnh
- 11. Cách cài đặt gói thành phần Delphi từ dòng lệnh?
- 12. MySQL: Làm thế nào để biến một cơ sở dữ liệu thành chỉ đọc?
- 13. Làm cách nào để đọc dòng đầu vào trong Thông báo 7?
- 14. Thực hiện dòng lệnh thông qua php?
- 15. Làm cách nào để tạm thời bỏ qua việc chạy tác vụ biên dịch trong lệnh sbt tùy chỉnh?
- 16. Làm cách nào để đặt "Album Artist" của một bài hát theo chương trình hoặc thông qua dòng lệnh (linux)
- 17. Làm cách nào để thêm hành động điểm ngắt thông qua dòng lệnh LLDB?
- 18. Làm thế nào để thiết lập giá trị dòng lệnh thông qua Ruby để xem trạng thái thông qua PS?
- 19. Làm cách nào để cài đặt Javadoc của OpenJDK qua dòng lệnh?
- 20. Cách hủy bỏ APK thông qua dòng lệnh trong Windows
- 21. Đặt JVM qua dòng lệnh trên Windows
- 22. Làm cách nào để đặt cài đặt ứng dụng tại thời điểm cài đặt (thông qua lớp trình cài đặt)
- 23. Làm cách nào để lặp qua tất cả các dòng tệp được truyền trên dòng lệnh?
- 24. Làm thế nào để sửa đổi biến PATH chắc chắn thông qua dòng lệnh trong Windows
- 25. qmake: cách cung cấp nhiều biến thông qua dòng lệnh?
- 26. Làm cách nào để tạo thuộc tính chỉ đọc?
- 27. Quay stringstream tạm thời để c_str() trong câu lệnh
- 28. Bảng tạm thời MYSQL - Cách xem các bảng hoạt động
- 29. Làm thế nào để xóa cơ sở dữ liệu mysql thông qua lệnh shell
- 30. Cách nhập tệp SQL bằng cách sử dụng mysqldump trên Windows thông qua dòng lệnh
Thay đổi người dùng, có lẽ? – Strawberry
Có một câu hỏi tương tự (với câu trả lời) tại dba.sc: http://dba.stackexchange.com/questions/74670/revoke-write-privileges-vs-setting-database-to-readonly – Bass