MySQL là một hệ thống cơ sở dữ liệu quan hệ mã nguồn mở hoạt động trên nhiều Hệ điều hành, bao gồm Windows, Linux, macOS và FreeBSD. Đây có lẽ là RDBMS mã nguồn mở phổ biến nhất và là thành phần trung tâm của LAMP và LEMP Stacks. Nhiều ứng dụng phụ thuộc vào MySQL như WordPress, Joomla, TYPO3, phpBB và nhiều ứng dụng khác.
Một số tính năng mới đã được thêm vào MySQL 8 bao gồm hỗ trợ JSON, Transactional Data Dictionary, cấu hình thời gian chạy liên tục, Document Store, Optimizer Hints, SQL roles, CTEs, window function, Invisible indexes và nhiều tính năng khác.
Bạn sẽ học được gì?
Trong hướng dẫn này, bạn sẽ học một số thứ liên quan đến máy chủ MySQL và dưới đây là thông tin chi tiết về:
Chúng tôi sẽ cài đặt MySQL Server 8.04 trên Debian Buster 10 mới nhất với 2GB RAM và 4 CPU cho hướng dẫn này. Ngoài ra, chúng tôi cần quyền root để cài đặt các gói và chỉnh sửa cấu hình hệ thống.
Trước khi thêm kho lưu trữ MySQL, hãy cài đặt gói 'GnuPG' bằng lệnh apt bên dưới.
Sau khi hoàn tất quá trình cài đặt, hãy tải xuống kho lưu trữ MySQL APT và thêm vào hệ thống của bạn.
Giữ nguyên kho lưu trữ theo mặc định và chọn 'OK'.
Và kho lưu trữ MySQL chính thức đã được thêm vào.
Tiếp theo, hãy cập nhật tất cả các kho lưu trữ khả dụng trên hệ thống Debian bằng lệnh sau.
Và bạn sẽ nhận được kho lưu trữ MySQL chính thức trong danh sách bên dưới.
Như có thể thấy, kho lưu trữ MySQL chính thức đã được thêm vào và chúng ta đã sẵn sàng cài đặt MySQL Server 8.0 vào Debian Buster 10.
Bây giờ hãy nhập mật khẩu gốc cho cài đặt MySQL của bạn và chọn 'OK'.
Lặp lại mật khẩu cho người dùng root MySQL của bạn.
Sau đó, bạn sẽ được yêu cầu cấu hình plugin xác thực mặc định của MySQL. Chọn 'Strong Password Encryption' theo khuyến nghị và chọn 'OK'.
Và quá trình cài đặt MySQL Server 8.0 đã hoàn tất.
Bây giờ hãy kiểm tra dịch vụ MySQL bằng lệnh sau.
Dưới đây là kết quả bạn sẽ nhận được.
Kết quả là dịch vụ MySQL đã hoạt động trên Debian Server. Dịch vụ sẽ tự động chạy khi khởi động hệ thống.
Công cụ 'mysql_secure_installation' sẽ giúp bạn cải thiện quá trình triển khai MySQL của mình từ nhiều khía cạnh khác nhau như thiết lập độ mạnh của mật khẩu, vô hiệu hóa quyền truy cập từ xa và xóa người dùng ẩn danh mặc định và cơ sở dữ liệu thử nghiệm.
Bây giờ hãy chạy lệnh 'mysql_secure_installation' trên shell của bạn.
Khi bắt đầu cài đặt MySQL, bạn đã định cấu hình mật khẩu gốc cho MySQL. Bây giờ hãy nhập mật khẩu để tiếp tục quá trình.
Sau đó, nhập 'Y' để cấu hình thành phần 'XÁC THỰC MẬT KHẨU'.
Bây giờ hãy chọn mức chính sách xác thực mật khẩu cho tất cả người dùng. Nhập '2' để thiết lập chính sách mức mật khẩu 'STRONG'.
Bây giờ lệnh 'mysql_secure_installation' sẽ kiểm tra độ mạnh của mật khẩu hiện tại của bạn. Như có thể thấy, độ mạnh của mật khẩu hiện tại của chúng ta là '50'. Bây giờ hãy nhập 'Y' để thay đổi mật khẩu hiện tại bằng mật khẩu mới mạnh hơn.
Bây giờ hãy nhập mật khẩu mạnh của bạn và đảm bảo có điểm 100, sau đó nhập 'Y' để tiếp tục với mật khẩu mới.
Kết quả là, thành phần MySQL 'VALIDATE PASSWORD' đã được định cấu hình với chính sách mật khẩu mạnh và mật khẩu MySQL mới đã được tạo.
Tiếp theo, bạn sẽ được yêu cầu xóa người dùng ẩn danh mặc định. Nhập 'Y' để xóa người dùng ẩn danh mặc định cho cài đặt của bạn.
Tiếp theo, nhập 'Y' một lần nữa để tắt đăng nhập từ xa MySQL và nếu bạn muốn máy chủ MySQL chỉ có thể truy cập cục bộ.
Sau đó, xóa cơ sở dữ liệu mặc định 'test' khỏi Máy chủ MySQL của bạn. Nhập 'Y' và nhấn Enter để tiếp tục.
Tiếp theo, nhập 'Y' một lần nữa để tải lại các bảng đặc quyền. Trên thực tế, các thay đổi cấu hình MySQL mới đã được áp dụng.
Kết quả là, Triển khai Máy chủ MySQL An toàn bằng tập lệnh 'mysql_secure_installation' đã hoàn tất. Ở giai đoạn này, bạn đã kích hoạt thành phần 'XÁC THỰC MẬT KHẨU' với chính sách mật khẩu mạnh cấp độ '2', mật khẩu gốc mạnh mới cho MySQL cũng đã được cấu hình.
Bây giờ hãy đến thư mục '/etc/mysql/conf.d/' và tạo cấu hình mới 'mysqld.cnf' bằng trình soạn thảo vim.
Dán cấu hình sau vào đó.
Lưu và đóng.
Tiếp theo, khởi động lại dịch vụ MySQL và kiểm tra các cổng mở trên hệ thống bằng lệnh sau.
Dưới đây là kết quả bạn sẽ nhận được.
Như có thể thấy, Máy chủ MySQL đang hoạt động trên địa chỉ IP cục bộ '127.0.0.1' trên cổng TCP không phải mặc định '8320'.
Tiếp theo, để đăng nhập vào shell MySQL bằng cổng tùy chỉnh, bạn có thể sử dụng lệnh 'mysql' với tùy chọn '-P port' như bên dưới.
Nhập mật khẩu gốc cho Máy chủ MySQL.
Sau khi đăng nhập, hãy chạy truy vấn sau để kiểm tra cấu hình cổng của Máy chủ MySQL.
Và bạn sẽ nhận được thông báo Máy chủ MySQL đang chạy trên cổng tùy chỉnh '8320' như bên dưới.
Kết quả là, bạn đã cấu hình Máy chủ MySQL để chạy trên địa chỉ IP cục bộ '127.0.0.1' với cổng TCP tùy chỉnh '8320'.
Trong bước này, bạn sẽ tìm hiểu cách thiết lập và bật SSL và truy cập từ xa trên MySQL Server.
Đối với bước này, chúng ta sẽ tạo một chứng chỉ SSL mới cho Máy chủ MySQL bằng công cụ dòng lệnh 'mysql_ssl_rsa_setup'.
Bây giờ, hãy tạo một thư mục SSL mới '/etc/mysql/certs' và thay đổi quyền sở hữu thư mục đó thành người dùng 'mysql'.
Tiếp theo, tạo các chứng chỉ SSL mới cho Máy chủ MySQL bằng lệnh sau. Và hãy đảm bảo thay đổi '--suffix=STRING' bằng Tên chung của bạn.
Sau khi hoàn tất, chứng chỉ SSL mới cho Máy chủ MySQL đã được tạo tại thư mục '/etc/mysql/certs'.
Kiểm tra chứng chỉ SSL của bạn bằng lệnh sau.
Dưới đây là kết quả bạn sẽ lấy.
Chứng chỉ SSL mới cho MySQL Server đã được tạo vào thư mục '/etc/mysql/certs/'.
Bây giờ hãy chuyển đến thư mục '/etc/mysql/conf.d/' và chỉnh sửa cấu hình mà chúng ta đã tạo ở trên cùng 'mysqld.cnf' bằng trình soạn thảo vim.
Thay đổi 'bind-address' bằng địa chỉ IP nội bộ của bạn như bên dưới.
Tiếp theo, thêm Cấu hình SSL cho Máy chủ MySQL bên dưới và thay đổi đường dẫn SSL theo đường dẫn của riêng bạn.
Ngoài ra, bạn có thể chỉ định phiên bản TLS của tất cả các máy khách của mình và buộc chúng chỉ sử dụng kết nối SSL an toàn bằng cách sử dụng cấu hình sau.
Lưu và đóng.
Tiếp theo, khởi động lại dịch vụ MySQL để áp dụng cấu hình mới và kiểm tra địa chỉ IP của máy chủ MySQL bằng lệnh sau.
Và bạn sẽ nhận được thông báo Máy chủ MySQL đã hoạt động trên địa chỉ IP mạng nội bộ có bật SSL.
Đăng nhập vào shell MySQL bằng lệnh sau.
Bây giờ hãy tạo người dùng MySQL mới để kết nối từ xa bằng truy vấn sau.
Nhập 'exit' để đăng xuất khỏi shell MySQL.
Tiếp theo, bạn cần sao chép CA và chứng chỉ máy khách và khóa vào máy khách bằng lệnh SCP như bên dưới.
Sau đó, kết nối với máy khách của bạn và tạo cấu hình mới bằng trình soạn thảo vim.
Dán cấu hình máy khách MySQL như bên dưới và thay đổi đường dẫn chứng chỉ SSL của máy khách bằng đường dẫn của riêng bạn.
Lưu và đóng.
Để kết nối với Máy chủ MySQL từ xa bằng cổng tùy chỉnh, hãy chạy lệnh 'mysql' bên dưới.
Sau khi đăng nhập, hãy kiểm tra trạng thái kết nối của bạn bằng truy vấn sau.
Dưới đây là kết quả bạn sẽ nhận được.
Như có thể thấy, bạn đã đăng nhập bằng kết nối bảo mật SSL TLSv1.2 vào Máy chủ MySQL.
Do đó, quyền truy cập từ xa bằng kết nối SSL bảo mật cho Máy chủ MySQL đã được bật.
Trước khi đi xa hơn, hãy cài đặt một số gói phụ thuộc bằng lệnh apt bên dưới.
Tiếp theo, hãy đến thư mục '/var/www/html' và tải xuống mã nguồn phpMyAdmin mới nhất.
Bây giờ hãy giải nén mã nguồn phpMyAdmin và đổi tên vào thư mục mới có tên 'phpMyAdmin'.
Tiếp theo, hãy vào thư mục '/var/www/phpMyAdmin' và sao chép tệp cấu hình mặc định vào 'config.inc.php'.
Chỉnh sửa tệp cấu hình 'config.inc.php' bằng trình soạn thảo vim.
Tạo mã bí mật blowfish bằng liên kết này và dán mã vào dòng 'blowfish_secret' như bên dưới.
Tiếp theo, nhập thông tin chi tiết về Máy chủ MySQL của bạn vào dòng 'Cấu hình máy chủ' như bên dưới.
Sau đó, dán cấu hình sau để kích hoạt giao tiếp SSL từ phpMyAdmin đến Máy chủ MySQL. Và hãy đảm bảo thay đổi đường dẫn chứng chỉ CA và máy khách bằng đường dẫn của riêng bạn và đảm bảo người dùng 'www-data' có thể truy cập chứng chỉ CA và máy khách.
Lưu và đóng.
Bây giờ hãy thay đổi quyền sở hữu thư mục 'phpMyAdmin' thành người dùng 'www-data'.
Và quá trình cài đặt phpMyAdmin và cấu hình phpMyAdmin đã hoàn tất.
Bây giờ hãy đăng nhập vào Máy chủ MySQL, kiểm tra trạng thái SSL của MySQL, tạo cơ sở dữ liệu và người dùng mới cho phpMyAdmin.
Đăng nhập vào Máy chủ MySQL bằng lệnh sau lệnh.
Bây giờ hãy kiểm tra trạng thái SSL bằng các truy vấn sau.
Dưới đây là kết quả bạn sẽ nhận được.
Như có thể thấy, máy chủ MySQL đang hoạt động với SSL được bật và đang sử dụng chứng chỉ SSL mà chúng tôi đã tạo. Chúng tôi cũng được kết nối với Máy chủ MySQL thông qua kết nối bảo mật SSL bằng tệp cấu hình '~/.my.cnf'.
Tiếp theo, tạo một cơ sở dữ liệu và người dùng mới có tên 'phpmyadmin' bằng truy vấn sau.
Nhập 'exit' để đăng xuất khỏi MySQL Shell.
Bây giờ hãy mở trình duyệt web của bạn và nhập địa chỉ IP của máy chủ với đường dẫn 'phpMyAdmin' trên thanh địa chỉ.
Trên trang Đăng nhập phpMyAdmin, nhập người dùng 'phpmyadmin' với mật khẩu mà chúng ta đã tạo ở trên cùng và nhấp vào nút 'GO'.
Và bạn sẽ nhận được Bảng điều khiển phpMyAdmin như bên dưới.
Kết quả là quá trình cài đặt và cấu hình phpMyAdmin đã hoàn tất.
Kết nối với Máy chủ MySQL với cấu hình mặc định bằng lệnh sau.
Nếu Máy chủ MySQL của bạn đang chạy trên cổng tùy chỉnh, hãy sử dụng tùy chọn '-P port' bên dưới.
Nếu máy chủ MySQL của bạn chạy trên mạng cục bộ với cổng tùy chỉnh, hãy sử dụng tùy chọn 'h host/IP Address' và '-P port' bên dưới.
Sau khi bạn đã kết nối với Máy chủ MySQL của mình, hãy chạy truy vấn sau để kiểm tra trạng thái kết nối.
Và bạn sẽ nhận được thông báo sau kết quả.
Và bạn đã kết nối thành công với Máy chủ MySQL.
Để tạo cơ sở dữ liệu MySQL mới, hãy sử dụng truy vấn sau.
Bây giờ hãy kiểm tra tất cả các cơ sở dữ liệu danh sách trên máy chủ MySQL của bạn bằng truy vấn sau.
Tiếp theo, bạn có thể chuyển đổi và chọn cơ sở dữ liệu bằng truy vấn sau.
Tiếp theo, bạn có thể tạo một bảng trên cơ sở dữ liệu của bạn bằng truy vấn 'CREATE TABLE' như bên dưới.
Bây giờ bạn có thể sử dụng 'DESCRIBE table-name' để kiểm tra tất cả các trường trên cơ sở dữ liệu của bạn.
Và bạn sẽ nhận được tất cả các trường chi tiết trên bảng 'users'.
Tiếp theo, bạn có thể chèn dữ liệu thủ công vào bảng của mình bằng truy vấn 'INSERT' như bên dưới.
Bây giờ bạn đã chèn dữ liệu thành công vào cơ sở dữ liệu MySQL. Tiếp theo, kiểm tra tất cả dữ liệu trên bảng bằng truy vấn 'SELECT' như bên dưới.
Và bạn sẽ nhận được tất cả dữ liệu từ bảng của mình.
Truy vấn MySQL cơ bản để tạo người dùng là sử dụng truy vấn 'CREATE USER'. Sau đó, bạn có thể cấp quyền của cơ sở dữ liệu cho người dùng của mình bằng lệnh 'GRANT' theo sau là các tùy chọn của lệnh này. Và cuối cùng, bạn phải tải lại các bảng cấp quyền để áp dụng các thay đổi mới.
Thông tin bổ sung, tên máy chủ 'user@localhost' là một phần của tên tài khoản. '@localhost' chỉ cho phép người dùng kết nối từ máy chủ cục bộ. Nếu không được cung cấp, giá trị mặc định là '%' cho phép người dùng từ mọi nơi.
Chúng tôi sẽ tạo một người dùng mới có tên 'yume' kết nối thông qua IP máy khách '172.16.0.4' với plugin xác thực 'mysql_native_password' và người dùng sẽ chỉ được phép truy cập cơ sở dữ liệu 'yume_db'.
Do đó, người dùng 'yume' sẽ chỉ kết nối với máy chủ MySQL có địa chỉ IP '172.16.0.4'. Nếu không, xác thực người dùng sẽ bị MySQL Server từ chối.
Đối với trường hợp bảo mật hơn, bạn có thể sử dụng truy vấn 'REQUIRE X509', nghĩa là kết nối với MySQL Server chỉ được thiết lập khi máy người dùng/máy khách cung cấp chứng chỉ CA và máy khách.
Tạo người dùng mới có tên 'juice' với tên máy chủ '%'. Tùy chọn tên máy chủ '%' này cho phép người dùng 'juice' kết nối từ bất kỳ địa chỉ IP nào, nhưng kết nối sẽ được thiết lập khi máy khách cung cấp chứng chỉ CA và máy khách.
Do đó, người dùng 'juice' có thể kết nối với Máy chủ MySQL khi máy khách cung cấp chứng chỉ CA và máy khách.
Bây giờ bạn sẽ nhận được thông tin chi tiết về người dùng, máy chủ và các plugin xác thực được người dùng sử dụng.
Tiếp theo, hãy kiểm tra tất cả các quyền của người dùng bằng truy vấn 'SHOW GRANTS' như bên dưới.
Bây giờ bạn sẽ nhận được thông tin chi tiết về các quyền của người dùng.
Kết quả là bạn đã học được cách sử dụng chính của MySQL Server, bao gồm tạo cơ sở dữ liệu, tạo bảng, chèn dữ liệu vào bảng, tạo và hiển thị người dùng và hiển thị thông tin chi tiết về các quyền của từng người dùng.
Trước khi thực hiện bất kỳ bước nào khác, hãy tạo thư mục sao lưu và vào đó.
Và bạn đã sẵn sàng để tạo bản sao lưu cơ sở dữ liệu MySQL bằng tiện ích 'mysqldump'.
Bây giờ bạn sẽ nhận được tất cả bản sao lưu cơ sở dữ liệu của mình vào tệp SQL duy nhất có tên 'alldbs.sql'.
Kết quả là, bạn sẽ nhận được tệp sao lưu SQL từ cơ sở dữ liệu 'hakase_db' có tên là 'backup_hakase_db.sql' trên thư mục sao lưu.
Kết quả là, tệp sao lưu cho hai cơ sở dữ liệu 'yume_db' và 'juice_db' của bạn đã được tạo, được đặt tên là tệp 'multi-db-once.sql'.
Trước khi thực hiện tiếp, hãy đăng nhập vào shell MySQL bằng lệnh sau.
Tạo một người dùng sao lưu mới với một số đặc quyền bằng cách sử dụng truy vấn sau.
Bây giờ hãy nhập 'exit' để đăng xuất khỏi shell MySQL.
Tiếp theo, tạo một thư mục sao lưu mới '/opt/backup/mysql' để lưu trữ tất cả các tệp sao lưu cơ sở dữ liệu của bạn.
Sau đó, hãy đến thư mục '/usr/local/sbin' và tạo một tệp bash mới 'auto_backup.sh' bằng trình soạn thảo vim.
Thay đổi thông tin người dùng, mật khẩu và cổng theo thông tin của riêng bạn và dán cấu hình vào đó.
Lưu và đóng.
Bây giờ, hãy thực thi tập lệnh 'auto_backup.sh' và chạy tập lệnh để kiểm tra.
Kết quả là, bạn sẽ nhận được các tệp sao lưu cơ sở dữ liệu của mình trong thư mục '/opt/mysql/backup-current-date'. Kiểm tra bằng lệnh sau.
Dưới đây là kết quả bạn sẽ nhận được.
Kết quả là, bạn sẽ nhận được các tệp nén của bản sao lưu cơ sở dữ liệu của mình, điều đó có nghĩa là tập lệnh đang hoạt động.
Tiếp theo, tạo một cronjob mới sẽ chạy tập lệnh sao lưu tự động MySQL 'auto_backup.sh' hàng ngày vào thời điểm '00:00'.
Đặt trình chỉnh sửa mặc định thành 'vim' và tạo một cronjob mới dưới dạng người dùng root bằng lệnh sau.
Bây giờ hãy dán cấu hình sau vào đó.
Lưu và đóng.
Cronjob mới cho người dùng root đã được tạo. Kiểm tra tất cả danh sách cronjob cho người dùng root bằng lệnh sau.
Và bạn sẽ nhận được cấu hình cron chi tiết cho người dùng root.
Kết quả là bạn đã thiết lập thành công sao lưu cơ sở dữ liệu MySQL tự động bằng tập lệnh bash và Linux Cron.
Cuối cùng, bạn đã học cách cài đặt và bảo mật MySQL Database Server trên Debian Buster 10 với quản lý cơ sở dữ liệu dựa trên web phpMyAdmin. Ngoài ra, bạn đã học truy vấn MySQL cơ bản để quản lý người dùng, tạo cơ sở dữ liệu và bảng, và sử dụng tiện ích mysqldump để sao lưu cơ sở dữ liệu.
Một số tính năng mới đã được thêm vào MySQL 8 bao gồm hỗ trợ JSON, Transactional Data Dictionary, cấu hình thời gian chạy liên tục, Document Store, Optimizer Hints, SQL roles, CTEs, window function, Invisible indexes và nhiều tính năng khác.
Bạn sẽ học được gì?
Trong hướng dẫn này, bạn sẽ học một số thứ liên quan đến máy chủ MySQL và dưới đây là thông tin chi tiết về:
- Cài đặt MySQL Server 8 trên Debian Buster 10
- Thiết lập mật khẩu gốc MySQL
- Triển khai máy chủ MySQL an toàn (Thay đổi địa chỉ liên kết, cổng, v.v.)
- Thiết lập SSL và bật kết nối từ xa cho máy chủ MySQL
- Cài đặt và cấu hình phpMyAdmin
- Truy vấn MySQL cơ bản để tạo người dùng, cơ sở dữ liệu, v.v.
- Thiết lập sao lưu tự động MySQL cơ sở dữ liệu
Chúng tôi sẽ cài đặt MySQL Server 8.04 trên Debian Buster 10 mới nhất với 2GB RAM và 4 CPU cho hướng dẫn này. Ngoài ra, chúng tôi cần quyền root để cài đặt các gói và chỉnh sửa cấu hình hệ thống.
Bước 1 - Thêm kho lưu trữ MySQL
Đối với hướng dẫn này, chúng tôi sẽ cài đặt MySQL Server 8 từ kho lưu trữ MySQL chính thức. Để thực hiện điều đó, chúng ta cần thêm kho lưu trữ MySQL chính thức vào Máy chủ Debian của mình.Trước khi thêm kho lưu trữ MySQL, hãy cài đặt gói 'GnuPG' bằng lệnh apt bên dưới.
Mã:
sudo apt install gnupg -y
Mã:
wget -q http://repo.mysql.com/mysql-apt-config_0.8.15-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb
Và kho lưu trữ MySQL chính thức đã được thêm vào.
Tiếp theo, hãy cập nhật tất cả các kho lưu trữ khả dụng trên hệ thống Debian bằng lệnh sau.
Mã:
sudo apt cập nhật
Như có thể thấy, kho lưu trữ MySQL chính thức đã được thêm vào và chúng ta đã sẵn sàng cài đặt MySQL Server 8.0 vào Debian Buster 10.
Bước 2 - Cài đặt MySQL Server
Để cài đặt MySQL Server 8.0 vào hệ thống Debian, hãy chạy lệnh apt bên dưới.
Mã:
sudo apt install mysql-server
Lặp lại mật khẩu cho người dùng root MySQL của bạn.
Sau đó, bạn sẽ được yêu cầu cấu hình plugin xác thực mặc định của MySQL. Chọn 'Strong Password Encryption' theo khuyến nghị và chọn 'OK'.
Và quá trình cài đặt MySQL Server 8.0 đã hoàn tất.
Bây giờ hãy kiểm tra dịch vụ MySQL bằng lệnh sau.
Mã:
systemctl is-enabled mysql
systemctl status mysql
Kết quả là dịch vụ MySQL đã hoạt động trên Debian Server. Dịch vụ sẽ tự động chạy khi khởi động hệ thống.
Bước 3 - Bảo mật triển khai MySQL bằng mysql_secure_password
Trong bước này, chúng ta sẽ cải thiện tính bảo mật của quá trình cài đặt máy chủ MySQL bằng công cụ dòng lệnh 'mysql_secure_installation'.Công cụ 'mysql_secure_installation' sẽ giúp bạn cải thiện quá trình triển khai MySQL của mình từ nhiều khía cạnh khác nhau như thiết lập độ mạnh của mật khẩu, vô hiệu hóa quyền truy cập từ xa và xóa người dùng ẩn danh mặc định và cơ sở dữ liệu thử nghiệm.
Bây giờ hãy chạy lệnh 'mysql_secure_installation' trên shell của bạn.
Mã:
mysql_secure_installation
Mã:
Nhập mật khẩu cho người dùng root: NHẬP MẬT KHẨU MYSQL ROOT CỦA BẠN
Mã:
CÁC THÀNH PHẦN XÁC THỰC MẬT KHẨU có thể được sử dụng để kiểm tra mật khẩu
và cải thiện tính bảo mật. Nó kiểm tra độ mạnh của mật khẩu
và cho phép người dùng chỉ đặt những mật khẩu
đủ an toàn. Bạn có muốn thiết lập thành phần XÁC THỰC MẬT KHẨU không?
Nhấn y|Y để Có, bất kỳ phím nào khác để Không: Y
Mã:
Có ba mức chính sách xác thực mật khẩu:
THẤP Chiều dài >= 8
TRUNG BÌNH Chiều dài >= 8, số, chữ hoa và chữ thường, và ký tự đặc biệt
MẠNH Chiều dài >= 8, số, chữ hoa và chữ thường, ký tự đặc biệt, và tệp từ điển
Vui lòng nhập 0 = THẤP, 1 = TRUNG BÌNH và 2 = MẠNH: 2
Sử dụng mật khẩu hiện có cho root.
Mã:
Độ mạnh ước tính của mật khẩu: 50
Đổi mật khẩu cho root? ((Nhấn y|Y để Có, bất kỳ phím nào khác để Không): Y
Mã:
Mật khẩu mới:
Nhập lại mật khẩu mới:
Độ mạnh ước tính của mật khẩu: 100
Bạn có muốn tiếp tục với mật khẩu đã cung cấp không? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): Y
Tiếp theo, bạn sẽ được yêu cầu xóa người dùng ẩn danh mặc định. Nhập 'Y' để xóa người dùng ẩn danh mặc định cho cài đặt của bạn.
Mã:
Theo mặc định, cài đặt MySQL có một người dùng ẩn danh,
cho phép bất kỳ ai đăng nhập vào MySQL mà không cần tạo người dùng tài khoản. Điều này chỉ dành cho mục đích thử nghiệm và để quá trình cài đặt diễn ra suôn sẻ hơn một chút.
Bạn nên xóa chúng trước khi chuyển sang môi trường sản xuất.
Xóa người dùng ẩn danh? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): Y
Mã:
Thông thường, root chỉ được phép kết nối từ
'localhost'. Điều này đảm bảo rằng ai đó không thể đoán được
mật khẩu root từ mạng.
Không cho phép root đăng nhập từ xa? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): Y
Mã:
Theo mặc định, MySQL đi kèm với một cơ sở dữ liệu có tên là 'test' mà
bất kỳ ai cũng có thể truy cập. Điều này cũng chỉ dành cho mục đích thử nghiệm,
và nên được xóa trước khi chuyển sang môi trường sản xuất.
Xóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? (Nhấn y|Y để có, bất kỳ phím nào khác để không): Y
Mã:
Tải lại các bảng đặc quyền sẽ đảm bảo rằng tất cả các thay đổi
đã thực hiện cho đến nay sẽ có hiệu lực ngay lập tức.
Tải lại các bảng đặc quyền ngay bây giờ? (Nhấn y|Y để có, bất kỳ phím nào khác để không): Y
Bước 4 - Bảo mật máy chủ MySQL bằng cấu hình bổ sung
Đối với hướng dẫn này, chúng tôi sẽ thêm cấu hình bổ sung để cải thiện việc triển khai Máy chủ MySQL. Chúng tôi sẽ chỉ định bind-address của MySQL Server, thay đổi cổng mặc định, vô hiệu hóa tệp dữ liệu tải và thiết lập chính sách hết hạn mật khẩu cho tất cả người dùng MySQL.Bây giờ hãy đến thư mục '/etc/mysql/conf.d/' và tạo cấu hình mới 'mysqld.cnf' bằng trình soạn thảo vim.
Mã:
cd /etc/mysql/conf.d/
vim mysqld.cnf
Mã:
[mysqld]
# MySQL chạy trên 127.0.0.1 với cổng 8320
bind-address=127.0.0.1
port=8320
# Vô hiệu hóa LOAD DATA LOCA
local-infile=0
# Hết hạn mật khẩu thành 60 ngày
default_password_lifetime=60
# Plugin MySQLX đang chạy trên 127.0.0.1 với cổng 8321
mysqlx_bind_address=127.0.0.1
mysqlx_port=8321
Tiếp theo, khởi động lại dịch vụ MySQL và kiểm tra các cổng mở trên hệ thống bằng lệnh sau.
Mã:
systemctl restart mysql
ss -plnt
Như có thể thấy, Máy chủ MySQL đang hoạt động trên địa chỉ IP cục bộ '127.0.0.1' trên cổng TCP không phải mặc định '8320'.
Tiếp theo, để đăng nhập vào shell MySQL bằng cổng tùy chỉnh, bạn có thể sử dụng lệnh 'mysql' với tùy chọn '-P port' như bên dưới.
Mã:
mysql -u root -P 8320 -p
Sau khi đăng nhập, hãy chạy truy vấn sau để kiểm tra cấu hình cổng của Máy chủ MySQL.
Mã:
hiển thị các biến như 'cổng';
Kết quả là, bạn đã cấu hình Máy chủ MySQL để chạy trên địa chỉ IP cục bộ '127.0.0.1' với cổng TCP tùy chỉnh '8320'.
Bước 5 - Bảo mật và kích hoạt Kết nối từ xa MySQL bằng SSL
Giả sử bạn muốn triển khai Máy chủ MySQL trên mạng nội bộ và cho phép các máy chủ khác trên cùng mạng truy cập cơ sở dữ liệu trên Máy chủ MySQL. Trong trường hợp đó, bạn nên bật SSL cho quá trình triển khai MySQL Server của mình.Trong bước này, bạn sẽ tìm hiểu cách thiết lập và bật SSL và truy cập từ xa trên MySQL Server.
Tạo chứng chỉ SSL
Theo mặc định, MySQL Server 8.0 sẽ tự động tạo chứng chỉ SSL trong quá trình cài đặt. Tất cả các chứng chỉ SSL mặc định đều có sẵn tại thư mục '/var/lib/mysql'.Đối với bước này, chúng ta sẽ tạo một chứng chỉ SSL mới cho Máy chủ MySQL bằng công cụ dòng lệnh 'mysql_ssl_rsa_setup'.
Bây giờ, hãy tạo một thư mục SSL mới '/etc/mysql/certs' và thay đổi quyền sở hữu thư mục đó thành người dùng 'mysql'.
Mã:
mkdir -p /etc/mysql/certs/
sudo chown -R mysql:mysql /etc/mysql/certs
Mã:
sudo mysql_ssl_rsa_setup --suffix=HakasMySQLSrv --uid=mysql --datadir=/etc/mysql/certs/
Kiểm tra chứng chỉ SSL của bạn bằng lệnh sau.
Mã:
ls -lah /etc/mysql/certs/
openssl verify -CAfile /etc/mysql/certs/ca.pem /etc/mysql/certs/server-cert.pem /etc/mysql/certs/client-cert.pem
Chứng chỉ SSL mới cho MySQL Server đã được tạo vào thư mục '/etc/mysql/certs/'.
Bật SSL và Truy cập từ xa vào MySQL Server
Để bật SSL và truy cập từ xa trên MySQL Server, bạn sẽ cần thay đổi tùy chọn 'bind-address' bằng địa chỉ IP của mạng nội bộ và thêm cấu hình SSL cho MySQL.Bây giờ hãy chuyển đến thư mục '/etc/mysql/conf.d/' và chỉnh sửa cấu hình mà chúng ta đã tạo ở trên cùng 'mysqld.cnf' bằng trình soạn thảo vim.
Mã:
cd /etc/mysql/conf.d/
vim mysqld.cnf
Mã:
bind-address=172.16.0.3
Mã:
ssl-ca=/etc/mysql/certs/ca.pem
ssl-cert=/etc/mysql/certs/server-cert.pem
ssl-key=/etc/mysql/certs/server-key.pem
Mã:
#require_secure_transport=ON
tls_version=TLSv1.1,TLSv1.2
Tiếp theo, khởi động lại dịch vụ MySQL để áp dụng cấu hình mới và kiểm tra địa chỉ IP của máy chủ MySQL bằng lệnh sau.
Mã:
systemctl restart mysql
ss -plnt
Thiết lập máy khách và kiểm tra kết nối SSL
Để kết nối với máy chủ MySQL từ máy chủ/máy khách khác, bạn phải tạo người dùng MySQL mới, sao chép chứng chỉ máy khách và thêm cấu hình MySQL cho máy khách.Đăng nhập vào shell MySQL bằng lệnh sau.
Mã:
mysql -u root -P 8320 -p
Mã:
TẠO NGƯỜI DÙNG 'remoteuser'@'%' ĐƯỢC XÁC ĐỊNH VỚI mysql_native_password BỞI 'MyRemoteUserPasswordMySQL39==' YÊU CẦU SSL;
CẤP TẤT CẢ CÁC QUYỀN TRÊN *.* CHO 'remoteuser'@'%' VỚI TÙY CHỌN CẤP;
XẢ QUYỀN;
Tiếp theo, bạn cần sao chép CA và chứng chỉ máy khách và khóa vào máy khách bằng lệnh SCP như bên dưới.
Mã:
scp /etc/mysql/certs/ca.pem root@clientIP:/certificates/directory/
scp /etc/mysql/certs/client-cert.pem root@clientIP:/certificates/directory/
scp /etc/mysql/certs/client-key.pem root@clientIP:/certificates/directory/
Mã:
vim ~/.my.cnf
Mã:
[client]
ssl-ca=/home/gpk/certs/ca.pem
ssl-cert=/home/gpk/certs/client-cert.pem
ssl-key=/home/gpk/certs/client-key.pem
Để kết nối với Máy chủ MySQL từ xa bằng cổng tùy chỉnh, hãy chạy lệnh 'mysql' bên dưới.
Mã:
mysql -u remoteuser -h 172.16.0.3 -P 8320 -p
Sau khi đăng nhập, hãy kiểm tra trạng thái kết nối của bạn bằng truy vấn sau.
Mã:
TRẠNG THÁI
SELECT * FROM performance_schema.session_status
WHERE VARIABLE_NAME IN ('Ssl_version','Ssl_cipher');
Như có thể thấy, bạn đã đăng nhập bằng kết nối bảo mật SSL TLSv1.2 vào Máy chủ MySQL.
Do đó, quyền truy cập từ xa bằng kết nối SSL bảo mật cho Máy chủ MySQL đã được bật.
Bước 6 - Cài đặt và cấu hình phpMyAdmin
Trong bước này, bạn sẽ tìm hiểu cách cài đặt phpMyAdmin mới nhất với máy chủ web Apache. Bạn cũng sẽ học cách kết nối với MySQL Server trên máy chủ từ xa bằng một cổng tùy chỉnh và lưu trữ an toàn thông qua SSL từ phpMyAdmin.Trước khi đi xa hơn, hãy cài đặt một số gói phụ thuộc bằng lệnh apt bên dưới.
Mã:
sudo apt install apache2 libapache2-mod-php php-imagick php-phpseclib php-php-gettext php-common php-mysql php-gd php-imap php-json php-curl php-zip php-xml php-mbstring php-bz2 php-intl php-gmp unzip
Mã:
cd /var/www/html/
wget -q https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
Mã:
tar -xf phpMyAdmin-latest-all-languages.tar.gz
mv phpMyAdmin-5.0.2-all-languages phpMyAdmin
Mã:
cd /var/www/html/phpMyAdmin/
cp config.sample.inc.php config.inc.php
Mã:
vim config.inc.php
Mã:
$cfg['blowfish_secret'] = '6}2]RFleN-JT=/vXD}L/0j0v.YALV/e3'; /* BẠN PHẢI ĐIỀN VÀO ĐÂY ĐỂ XÁC THỰC COOKIE! */
Mã:
/**
* Cấu hình máy chủ
*/
$i = 0;
.....
/* Cấu hình máy chủ MySQL tùy chỉnh */
$cfg['Máy chủ'][$i]['host'] = '172.16.0.3';
$cfg['Máy chủ'][$i]['port'] = '8320';
.....
Mã:
/* Cấu hình SSL */
$cfg['Servers'][$i]['ssl'] = true;
$cfg['Servers'][$i]['ssl_key'] = '/opt/mysql/certs/client-key.pem';
$cfg['Servers'][$i]['ssl_cert'] = '/opt/mysql/certs/client-cert.pem';
$cfg['Servers'][$i]['ssl_ca'] = '/opt/mysql/certs/ca.pem';
/* Vô hiệu hóa Xác minh SSL cho chứng chỉ tự ký */
/* Điểm tốt: Kết nối giữa phpMyAdmin và Máy chủ MySQL được Mã hóa */
/* Nhưng bạn vẫn dễ bị tấn công với MiTM */
$cfg['Servers'][$i]['ssl_verify'] = false;
/* Ẩn một số cơ sở dữ liệu */
$cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|sys|mysql)';
Bây giờ hãy thay đổi quyền sở hữu thư mục 'phpMyAdmin' thành người dùng 'www-data'.
Mã:
sudo chown -R www-data:www-data /var/www/html/phpMyAdmin
Bây giờ hãy đăng nhập vào Máy chủ MySQL, kiểm tra trạng thái SSL của MySQL, tạo cơ sở dữ liệu và người dùng mới cho phpMyAdmin.
Đăng nhập vào Máy chủ MySQL bằng lệnh sau lệnh.
Mã:
mysql -u root -P 8329 -p
Mã:
SHOW VARIABLES LIKE '%ssl%';
STATUS
Như có thể thấy, máy chủ MySQL đang hoạt động với SSL được bật và đang sử dụng chứng chỉ SSL mà chúng tôi đã tạo. Chúng tôi cũng được kết nối với Máy chủ MySQL thông qua kết nối bảo mật SSL bằng tệp cấu hình '~/.my.cnf'.
Tiếp theo, tạo một cơ sở dữ liệu và người dùng mới có tên 'phpmyadmin' bằng truy vấn sau.
Mã:
TẠO CƠ SỞ DỮ LIỆU phpmyadmin;
TẠO NGƯỜI DÙNG 'phpmyadmin'@'%' ĐƯỢC XÁC ĐỊNH BẰNG mysql_native_password BỞI 'phpMyAdminAdmn352#$';
CẤP TẤT CẢ CÁC QUYỀN TRÊN *.* CHO 'phpmyadmin'@'%' BẰNG TÙY CHỌN CẤP;
XẢ QUYỀN;
Bây giờ hãy mở trình duyệt web của bạn và nhập địa chỉ IP của máy chủ với đường dẫn 'phpMyAdmin' trên thanh địa chỉ.
Trên trang Đăng nhập phpMyAdmin, nhập người dùng 'phpmyadmin' với mật khẩu mà chúng ta đã tạo ở trên cùng và nhấp vào nút 'GO'.
Và bạn sẽ nhận được Bảng điều khiển phpMyAdmin như bên dưới.
Kết quả là quá trình cài đặt và cấu hình phpMyAdmin đã hoàn tất.
Bước 7 - Tạo người dùng và cơ sở dữ liệu MySQL
Đối với bước này, bạn sẽ tìm hiểu cách sử dụng chính của các truy vấn MySQL để quản lý người dùng, cơ sở dữ liệu và lệnh mysqldump cơ bản để sao lưu cơ sở dữ liệu.Kết nối với máy chủ MySQL và kiểm tra trạng thái kết nối
Để kết nối với máy chủ MySQL, bạn có thể sử dụng dòng lệnh 'mysql'. Và theo mặc định, tất cả các kết nối từ Máy chủ MySQL cục bộ sẽ sử dụng socket Unix, kết nối SSL không làm cho kết nối an toàn hơn.Kết nối với Máy chủ MySQL với cấu hình mặc định bằng lệnh sau.
Mã:
mysql -u username -p
Mã:
mysql -u root -P 8320 -p
Mã:
mysql -u root -h 172.16.0.3 -P 8320 -p
Mã:
TRẠNG THÁI
Và bạn đã kết nối thành công với Máy chủ MySQL.
Tạo và Hiển thị Cơ sở dữ liệu
Sau khi kết nối với shell MySQL, bạn sẽ học cách tạo cơ sở dữ liệu MySQL, chọn cơ sở dữ liệu, tạo bảng và chèn dữ liệu.Để tạo cơ sở dữ liệu MySQL mới, hãy sử dụng truy vấn sau.
Mã:
CREATE DATABASE hakase_db;
CREATE DATABASE yume_db;
CREATE DATABASE juice_db;
Mã:
SHOW DATABASES;
SHOW DATABASES LIKE "%db%";
Tiếp theo, bạn có thể chuyển đổi và chọn cơ sở dữ liệu bằng truy vấn sau.
Mã:
USE hakase_db;
Mã:
CREATE TABLE users (first VARCHAR(20), last VARCHAR(20),
email VARCHAR(20), birth DATE, country VARCHAR(20));
Mã:
DESCRIBE users;
Tiếp theo, bạn có thể chèn dữ liệu thủ công vào bảng của mình bằng truy vấn 'INSERT' như bên dưới.
Mã:
INSERT INTO users
VALUES ('Mark','Mine','[emailprotected]','1999-03-20','Canada');
Mã:
SELECT * FROM users;
SELECT email, birth, country FROM users;
Tạo Người dùng MySQL
Sau khi tạo cơ sở dữ liệu, bạn sẽ học cách tạo người dùng trên Máy chủ MySQL và cấp quyền cho người dùng đó đối với cơ sở dữ liệu.Truy vấn MySQL cơ bản để tạo người dùng là sử dụng truy vấn 'CREATE USER'. Sau đó, bạn có thể cấp quyền của cơ sở dữ liệu cho người dùng của mình bằng lệnh 'GRANT' theo sau là các tùy chọn của lệnh này. Và cuối cùng, bạn phải tải lại các bảng cấp quyền để áp dụng các thay đổi mới.
- Cơ bản
Mã:
CREATE USER 'hakase'@'localhost' IDENTIFIED BY 'MyHakasePasswordMySQL39==';
GRANT ALL PRIVILEGES ON hakase_db.* TO 'hakase'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
- Tạo người dùng để truy cập từ xa bằng plugin xác thực cụ thể
Chúng tôi sẽ tạo một người dùng mới có tên 'yume' kết nối thông qua IP máy khách '172.16.0.4' với plugin xác thực 'mysql_native_password' và người dùng sẽ chỉ được phép truy cập cơ sở dữ liệu 'yume_db'.
Mã:
TẠO NGƯỜI DÙNG 'yume'@'172.16.0.4' ĐƯỢC XÁC ĐỊNH VỚI mysql_native_password BỞI 'MyYumePasswordMySQL39==';
CẤP TẤT CẢ CÁC QUYỀN TRÊN yume_db.* CHO 'yume'@'172.16.0.4' VỚI TÙY CHỌN CẤP;
XẢ QUYỀN;
- Tạo người dùng và buộc sử dụng kết nối SSL được mã hóa
Đối với trường hợp bảo mật hơn, bạn có thể sử dụng truy vấn 'REQUIRE X509', nghĩa là kết nối với MySQL Server chỉ được thiết lập khi máy người dùng/máy khách cung cấp chứng chỉ CA và máy khách.
Tạo người dùng mới có tên 'juice' với tên máy chủ '%'. Tùy chọn tên máy chủ '%' này cho phép người dùng 'juice' kết nối từ bất kỳ địa chỉ IP nào, nhưng kết nối sẽ được thiết lập khi máy khách cung cấp chứng chỉ CA và máy khách.
Mã:
CREATE USER 'juice'@'%' IDENTIFIED WITH mysql_native_password BY 'MyJuicePasswordMySQL39==' REQUIRE X509;
GRANT ALL PRIVILEGES ON juice_db.* TO 'juice'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Show All Available user and Grants
Sau khi tạo tất cả người dùng, hãy kiểm tra tất cả người dùng bằng các truy vấn sau.
Mã:
SELECT User, Host FROM mysql.user;
SELECT Người dùng, Máy chủ, plugin FROM mysql.user;
Tiếp theo, hãy kiểm tra tất cả các quyền của người dùng bằng truy vấn 'SHOW GRANTS' như bên dưới.
Mã:
SHOW GRANTS FOR 'hakase'@'localhost';
SHOW GRANTS FOR 'yume'@'172.16.0.3';
SHOW GRANTS FOR 'juice'@'%';
Kết quả là bạn đã học được cách sử dụng chính của MySQL Server, bao gồm tạo cơ sở dữ liệu, tạo bảng, chèn dữ liệu vào bảng, tạo và hiển thị người dùng và hiển thị thông tin chi tiết về các quyền của từng người dùng.
Bước 8 - Bổ sung: Tạo bản sao lưu gia tăng MySQL Cơ sở dữ liệu
Đối với bước này, bạn sẽ tìm hiểu cách sử dụng chính của lệnh 'mysqldump' để sao lưu tất cả các cơ sở dữ liệu MySQL. Dòng lệnh 'mysqldump' cho phép bạn sao lưu tất cả các cơ sở dữ liệu, cơ sở dữ liệu cụ thể hoặc nhiều cơ sở dữ liệu và sao lưu các bảng.Trước khi thực hiện bất kỳ bước nào khác, hãy tạo thư mục sao lưu và vào đó.
Mã:
mkdir -p ~/backup; cd ~/backup
Sao lưu tất cả các cơ sở dữ liệu
Để sao lưu tất cả các cơ sở dữ liệu trên Máy chủ MySQL, hãy sử dụng lệnh mysqldump với tùy chọn '--add-databases' bên dưới.
Mã:
mysqldump -u root -P 8320 --all-databases -p > alldbs.sql
Sao lưu cơ sở dữ liệu cụ thể
Để sao lưu cơ sở dữ liệu MySQL cụ thể, hãy bao gồm tên cơ sở dữ liệu của bạn vào lệnh mysqldump bên dưới.
Mã:
mysqldump -u root -P 8320 -p hakase_db > backup_hakase_db.sql
Sao lưu nhiều cơ sở dữ liệu
Nếu bạn muốn tạo bản sao lưu của nhiều cơ sở dữ liệu (không phải tất cả cơ sở dữ liệu trên Máy chủ MySQL), hãy sử dụng tùy chọn '--databases' bên dưới.
Mã:
mysqldump -u root -P 8320 -p --databases yume_db juice_db > multi-db-once.sql
Sao lưu tự động cơ sở dữ liệu MySQL
Để thiết lập sao lưu tự động cho MySQL, chúng ta sẽ sử dụng 'cron' của Linux. Chúng ta sẽ tạo một tập lệnh bash mới cho cơ sở dữ liệu MySQL và chạy nó tự động tại một thời điểm cụ thể bằng cách sử dụng Linux Cron.Trước khi thực hiện tiếp, hãy đăng nhập vào shell MySQL bằng lệnh sau.
Mã:
mysql -u root -P 8320 -p
Mã:
TẠO NGƯỜI DÙNG 'backup'@'localhost' ĐƯỢC XÁC ĐỊNH VỚI mysql_native_password BỞI 'MyBackupPasswordMySQL39==';
CẤP QUY TRÌNH, CHỌN, KHÓA BẢNG, HIỂN THỊ CHẾ ĐỘ XEM, SỰ KIỆN TRÊN *.* CHO 'backup'@'localhost' VỚI TÙY CHỌN CẤP;
XẢ QUYỀN;
Tiếp theo, tạo một thư mục sao lưu mới '/opt/backup/mysql' để lưu trữ tất cả các tệp sao lưu cơ sở dữ liệu của bạn.
Mã:
mkdir -p /opt/backup/mysql
Mã:
cd /usr/local/sbin/
vim auto_backup.sh
Mã:
#!/bin/bash
# Cấu hình cơ bản: dấu ngày tháng, ví dụ: YYYYMMDD
DATE=$(date +"%Y%m%d")
# Vị trí sao lưu của bạn (tạo thư mục trước!)
BACKUP_DIR="/opt/backup/mysql"
# Chi tiết đăng nhập MySQL
MYSQL_USER="backup"
MYSQL_PASSWORD="MyBackupPasswordMySQL39=="
# Vị trí thực thi MySQL (không cần thay đổi mục này)
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
# Cơ sở dữ liệu MySQL bạn muốn skip
SKIPDATABASES="Database|information_schema|performance_schema|mysql"
# Số ngày giữ các thư mục (các thư mục cũ hơn X ngày sẽ bị xóa)
RETENTION=14
# ---- KHÔNG THAY ĐỔI DƯỚI DÒNG NÀY ---------------------------------------
#
# Tạo một thư mục mới vào vị trí thư mục sao lưu cho ngày này
mkdir -p $BACKUP_DIR/$DATE
# Truy xuất danh sách tất cả các cơ sở dữ liệu
databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"`
# Làm cho các cơ sở dữ liệu trở nên đơn giản hơn bằng các tên riêng biệt và nén tệp .sql
cho db trong $databases; do
echo $db
$MYSQLDUMP --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --skip-lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz"
done
# Xóa các tệp cũ hơn X ngày
find $BACKUP_DIR/* -mtime +$RETENTION -delete
Bây giờ, hãy thực thi tập lệnh 'auto_backup.sh' và chạy tập lệnh để kiểm tra.
Mã:
chmod +x auto_backup.sh
./auto_backup.sh
Kết quả là, bạn sẽ nhận được các tệp sao lưu cơ sở dữ liệu của mình trong thư mục '/opt/mysql/backup-current-date'. Kiểm tra bằng lệnh sau.
Mã:
ls -lah /opt/backup/mysql/
ls -lah /opt/backup/mysql/datedir/
Kết quả là, bạn sẽ nhận được các tệp nén của bản sao lưu cơ sở dữ liệu của mình, điều đó có nghĩa là tập lệnh đang hoạt động.
Tiếp theo, tạo một cronjob mới sẽ chạy tập lệnh sao lưu tự động MySQL 'auto_backup.sh' hàng ngày vào thời điểm '00:00'.
Đặt trình chỉnh sửa mặc định thành 'vim' và tạo một cronjob mới dưới dạng người dùng root bằng lệnh sau.
Mã:
export EDITOR=vim
crontab -u root -e
Mã:
0 0 * * * sh /usr/local/sbin/auto_backup.sh
Cronjob mới cho người dùng root đã được tạo. Kiểm tra tất cả danh sách cronjob cho người dùng root bằng lệnh sau.
Mã:
crontab -u root -l
Kết quả là bạn đã thiết lập thành công sao lưu cơ sở dữ liệu MySQL tự động bằng tập lệnh bash và Linux Cron.
Cuối cùng, bạn đã học cách cài đặt và bảo mật MySQL Database Server trên Debian Buster 10 với quản lý cơ sở dữ liệu dựa trên web phpMyAdmin. Ngoài ra, bạn đã học truy vấn MySQL cơ bản để quản lý người dùng, tạo cơ sở dữ liệu và bảng, và sử dụng tiện ích mysqldump để sao lưu cơ sở dữ liệu.