Thông thường các bạn sẽ backup và restore cơ sở dữ liệu thông qua phpMyadmin khi sử dụng hosting một cách dễ dàng nhưng khi bạn sử dụng VPS thì việc cài thêm phpMyAdmin là không cần thiết, vì chúng ta hoàn toàn có thể sử dụng dòng lệnh để backup và restore database trên terminal.
Trước khi tạo một database mysql chúng ta cần đăng nhập vào mysql để có thực hiện được các shell liên quan đến mysql
mysql -u root -p
Sau khi đăng nhập thành công sẽ xuất hiện dấu nhắc lệnh mysql, nhớ nhập đúng mật khẩu lúc đầu tạo mysql. Nếu bạn quên mật khẩu root của mysql thì xem phần reset lại mật khẩu root của mysql.
mysql>
Đăng nhập thành công mysql
Để thực hiện tao database mới, bạn hãy nhập theo đoạn mã bên dưới, theo hướng dẫn này thì database mới có tên là tutorial_database
CREATE DATABASE tutorial_database;
Lưu ý: Mọi đoạn lệnh mysql đều kết thúc bằng dấu chấm phảy ";"
Sử dụng đoạn lệnh sau để hiển thị tất cả database mysql tồn tại trên hệ thông linux
SHOW DATABASES;
Sau khi nhập đoạn lệnh trên kết quả trả về sẽ giống như sau:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
| tutorial_database |
+--------------------+
4 rows in set (0.00 sec)
Tiện ích mysqldump có thể kết xuất cơ sở dữ liệu bao gồm các câu lệnh SQL cần thiết để xây dựng lại cơ sở dữ liệu.
Mặc định, tệp backup tạo ra các lệnh SQL để khôi phục các bảng và dữ liệu.
Để sao lưu cơ sở dữ liệu MySQL của bạn, cú pháp chung là:
sudo mysqldump -u [user] -p [database_name] > [filename].sql
Trong đó:
Sau khi enter hệ thống sẽ bắt bạn nhập mật khẩu của user database tương ứng, nếu mọi thứ điều đúng thì quá trình backup sẽ diễn ra, backup diễn ra nhanh hay chậm phụ thuộc vào lượng database của bạn.
Để khôi phục lại database mysql chúng ta cần nhập lệnh như sau:
mysql -u [user] -p [database_name] < [filename].sql
Trong đó:
Nhập đoạn code sau và thay thế user thành tên user của bạn để tạo một user mới
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
Sau khi tạo user mới thành công bạn cần cho nó quyền quản lý một database nào đó trong hệ thống ở đây mình chọn database "dbName"
GRANT ALL PRIVILEGES ON dbName.* To 'user'@'localhost';
GRANT - Đây là lệnh được sử dụng để tạo người dùng và cấp quyền cho cơ sở dữ liệu, bảng, v.v.
ALL PRIVILEGES - Điều này cho biết người dùng sẽ có tất cả các đặc quyền tiêu chuẩn. Tuy nhiên, điều này không bao gồm sử dụng lệnh GRANT.
dbName.* - Hướng dẫn này MySQL áp dụng các quyền này để sử dụng trong toàn bộ cơ sở dữ liệu dbName. Bạn có thể thay thế dấu * bằng các tên bảng cụ thể hoặc các quy trình lưu trữ nếu bạn muốn.
Quảng cáoTO 'user'@'localhost' - 'user' là tên người dùng của tài khoản người dùng bạn đang tạo. Lưu ý: Bạn phải có các dấu nháy đơn trong đó. 'tên máy chủ' cho MySQL biết những máy chủ mà người dùng có thể kết nối. Nếu bạn chỉ muốn nó từ cùng một máy, hãy sử dụng localhost
IDENTIFIED BY 'password' - Như bạn đã đoán, điều này sẽ đặt mật khẩu cho người dùng đó.
Đầu tiên bạn cần ngừng dịch vụ mysql đang chạy trên hệ thống bằng câu lệnh:
sudo /etc/init.d/mysql stop
Chạy đoạn lệnh sau để bật tính năng safe (an toàn)
sudo mysqld_safe --skip-grant-tables &
Tiếp theo kết nối mysql bằng đoạn lệnh
mysql -uroot
Sau khi kết nối chúng ta cần sửa đổi password của user root theo từng đoạn mã sau:
use mysql;
update user set authentication_string=PASSWORD("mynewpassword") where User='root';
flush privileges;
quit
Trong ví dụ trên thì mật khẩu root được đổi thành "mynewpassword".
Bây giờ chúng ta cần khởi động mysql để cho nó hoạt đồng bình thường
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
Giờ thì tiến hành đăng nhập tài khoản root bằng mật khẩu mới vừa tạo
mysql -u root -p
Chỉ cần nhập exit trong shell của mysql thì sẽ thoát ra.
exit;