Cách khôi phục dữ liệu mysql bằng dòng lệnh trên linux

Pham Kha
17:48 15-10-2022
211

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.

Tạo database mysql bằng dòng lệnh linux

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

Bước 1: Đăng nhập 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>

Cách khôi phục dữ liệu mysql bằng dòng lệnh trên linux

Đăng nhập thành công mysql

Bước 2: Tạo database mới

Để 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 ";"

Hiển thị các database hiện có trên hệ thống

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)

Backup database mysql bằng dòng lệnh linux

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 đó:

  • [user] là user quản lý database muốn backup 
  • [database_name] là tên database muốn backup
  • > là ký tự đặc biết để chỉ nới lưu file backup
  • [filename] bao gồm đường dẫn và tên file backup có phần mở rộng là sql

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.

Restore database mysql bằng dòng lệnh linux

Để 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 đó:

  • [user] là user quản lý database muốn restore
  • [database_name] là tên database muốn restore
  • < là ký tự đặc biết để chỉ nới lưu file restore (khác với backup database là >)
  • [filename] bao gồm đường dẫn và tên file restore có phần mở rộng là sql

Tạo user mới cho database mysql 

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áo

TO '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 đó.

Quên mật khẩu root mysql

Đầ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

Để thoát shell trong mysql

Chỉ cần nhập exit trong shell của mysql thì sẽ thoát ra.

exit;
Bình luận

Phần mềm gần đây