Hướng Dẫn Lệnh MySQL: Cơ Bản Từ Người Mới Đến Trung Cấp, CRUD, Người Dùng, Sao Lưu & Khắc Phục Sự Cố

目次

1. Giới thiệu

MySQL là một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở được sử dụng rộng rãi trong số các hệ thống quản lý cơ sở dữ liệu (DBMS). Nó đặc biệt phổ biến cho các ứng dụng web và hệ thống doanh nghiệp. Trong bài viết này, chúng tôi sẽ giải thích chi tiết các lệnh MySQL thiết yếu và cấu trúc nội dung sao cho người mới bắt đầu đến trung cấp có thể học một cách suôn sẻ.

1.1 MySQL là gì?

MySQL là phần mềm dùng để quản lý một cơ sở dữ liệu quan hệ (RDB). Dữ liệu được lưu trữ trong các bảng, và bạn thao tác dữ liệu bằng SQL (Structured Query Language). MySQL có các đặc điểm sau:

  • Mã nguồn mở và miễn phí cho bất kỳ ai sử dụng
  • Hiệu năng nhanh và nhẹ
  • Tương thích với nhiều ngôn ngữ lập trình (như PHP, Python và Java)
  • Phù hợp cho việc vận hành các cơ sở dữ liệu quy mô lớn

1.2 Lợi ích của việc học các lệnh MySQL

Để sử dụng MySQL một cách hiệu quả, việc hiểu các lệnh cơ bản là rất quan trọng. Các lợi ích chính bao gồm:

  • Quản lý dữ liệu hiệu quả hơn : Thành thạo các lệnh SQL cho phép bạn truy xuất, cập nhật và xóa dữ liệu nhanh chóng
  • Tự động hoá quy trình làm việc : Sử dụng script giúp bạn tự động hoá các thao tác trên cơ sở dữ liệu
  • Xử lý lỗi mượt mà hơn : Khi gặp vấn đề, bạn có thể giải quyết chúng bằng các lệnh SQL thích hợp

1.3 Những gì bạn sẽ học trong bài viết này

Bài viết này giải thích chi tiết các chủ đề sau:

  • Các thao tác MySQL cơ bản (khởi động, kết nối và các thao tác trên cơ sở dữ liệu)
  • Thêm, truy xuất, cập nhật và xóa dữ liệu (các thao tác CRUD)
  • Quản lý người dùng và thiết lập quyền hạn
  • Các lệnh hữu ích và cách khắc phục sự cố

Tiếp theo, chúng ta sẽ đi qua từng phần theo thứ tự. Hãy bắt đầu với các thao tác MySQL cơ bản.

2. Các thao tác cơ bản MySQL (Thân thiện với người mới bắt đầu)

2.1 Khởi động và Kết nối tới MySQL

2.1.1 Khởi động MySQL

Vì MySQL chạy như một chương trình máy chủ, bạn phải khởi động máy chủ trước. Phương pháp khởi động khác nhau tùy vào hệ điều hành.

Khởi động trên Linux / macOS

Trên Linux và macOS, bạn có thể khởi động MySQL bằng lệnh systemctl.

sudo systemctl start mysql

Kiểm tra MySQL có đang chạy không

sudo systemctl status mysql

Nếu bạn thấy “active (running)”, MySQL đang chạy bình thường.

Khởi động trên Windows

Trên Windows, MySQL thường chạy dưới dạng dịch vụ, vì vậy bạn có thể dùng lệnh net start.

net start mysql

Hoặc, nếu bạn đang sử dụng XAMPP, mở XAMPP Control Panel và nhấn “Start” cho “MySQL”.

2.1.2 Kết nối tới MySQL

Để kết nối tới MySQL, sử dụng lệnh mysql. Lệnh kết nối cơ bản như sau:

mysql -u username -p
Kết nối với người dùng root

Mặc định, người dùng root được cấu hình là quản trị viên. Bạn có thể kết nối bằng lệnh sau:

mysql -u root -p

Sau khi nhấn Enter, bạn sẽ được yêu cầu nhập mật khẩu. Nếu nhập đúng mật khẩu, bạn sẽ đăng nhập vào MySQL.

Kết nối tới một máy chủ cụ thể

Để kết nối tới một máy chủ MySQL từ xa, sử dụng tùy chọn -h.

mysql -h hostname -u username -p

Ví dụ, để kết nối tới máy chủ MySQL tại 192.168.1.100, viết như sau:

mysql -h 192.168.1.100 -u root -p
Kết nối bằng cách chỉ định số cổng

Cổng mặc định của MySQL là 3306. Nếu đã được thay đổi, bạn có thể chỉ định nó bằng tùy chọn -P.

mysql -h 192.168.1.100 -P 3307 -u root -p

2.2 Các lệnh MySQL cơ bản

Khi đã kết nối tới MySQL, hãy thử chạy một số lệnh cơ bản.

2.2.1 Kiểm tra phiên bản MySQL

Để kiểm tra phiên bản MySQL hiện đang sử dụng, chạy lệnh sau:

SELECT VERSION();

2.2.2 Kiểm tra cơ sở dữ liệu hiện tại

Để kiểm tra cơ sở dữ liệu nào đang được chọn, chạy:

SELECT DATABASE();

Nếu không có cơ sở dữ liệu nào được chọn, sẽ trả về NULL.

2.2.3 Liệt kê các cơ sở dữ liệu có sẵn

Để liệt kê các cơ sở dữ liệu tồn tại trong MySQL, sử dụng lệnh:

SHOW DATABASES;

2.3 Các lỗi thường gặp và cách khắc phục

2.3.1 Lỗi “Access denied”

Ví dụ lỗi:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Cách khắc phục:
  1. Xác minh mật khẩu đúng
  2. Kiểm tra và đặt lại quyền root privileges
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEW_PASSWORD';
    FLUSH PRIVILEGES;
    

2.3.2 “Can’t connect to MySQL server on ‘localhost’” error

Ví dụ lỗi:

ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (10061)
Cách khắc phục:
  1. Kiểm tra MySQL có đang chạy không ( systemctl status mysql )
  2. Khởi động lại MySQL
    sudo systemctl restart mysql
    

2.4 Tóm tắt

Trong phần này, chúng tôi đã giải thích cách khởi động MySQL và kết nối tới nó.

3. Các thao tác Cơ sở dữ liệu

Trong MySQL, bạn tạo một cơ sở dữ liệu để quản lý dữ liệu, và sau đó tổ chức thông tin bằng cách đặt bảng bên trong. Trong phần này, chúng tôi sẽ giải thích chi tiết các thao tác cơ bản như tạo, chọn, liệt kê và xóa cơ sở dữ liệu.

3.1 Tạo Cơ sở dữ liệu

Để tạo một cơ sở dữ liệu trong MySQL, sử dụng lệnh CREATE DATABASE.

3.1.1 Tạo một cơ sở dữ liệu cơ bản

Nếu bạn chạy lệnh SQL sau, bạn có thể tạo một cơ sở dữ liệu mới có tên my_database.

CREATE DATABASE my_database;
Thông báo khi tạo thành công
Query OK, 1 row affected (0.01 sec)

3.1.2 Khi bạn cố gắng tạo một cơ sở dữ liệu đã tồn tại

Nếu cơ sở dữ liệu đã tồn tại, bạn sẽ thấy lỗi như sau:

ERROR 1007 (HY000): Can't create database 'my_database'; database exists

Để tránh lỗi này, bạn có thể thêm tùy chọn IF NOT EXISTS.

CREATE DATABASE IF NOT EXISTS my_database;

Khi bạn chạy lệnh này, cơ sở dữ liệu sẽ chỉ được tạo nếu nó chưa tồn tại.

3.2 Liệt kê các Cơ sở dữ liệu

Để kiểm tra các cơ sở dữ liệu nào tồn tại trên máy chủ MySQL hiện tại, sử dụng lệnh SHOW DATABASES.

SHOW DATABASES;

Ví dụ đầu ra:

+--------------------+
| Database          |
+--------------------+
| information_schema |
| my_database       |
| mysql             |
| performance_schema |
| sys               |
+--------------------+

Lưu ý: Các cơ sở dữ liệu hệ thống như mysqlinformation_schema là cần thiết cho việc quản trị MySQL.

3.3 Chọn Cơ sở dữ liệu

Trong MySQL, bạn phải chọn cơ sở dữ liệu muốn sử dụng. Để chỉ định một cơ sở dữ liệu, chạy lệnh USE.

USE my_database;
Thông báo khi thành công
Database changed

Để xác nhận cơ sở dữ liệu hiện đang được chọn, sử dụng lệnh sau:

SELECT DATABASE();

Ví dụ đầu ra:

+------------+
| DATABASE() |
+------------+
| my_database |
+------------+

3.4 Xóa Cơ sở dữ liệu

Để xóa một cơ sở dữ liệu không còn cần thiết, sử dụng lệnh DROP DATABASE.

DROP DATABASE my_database;

3.4.1 Lưu ý quan trọng trước khi xóa

  • Cẩn thận: xóa một cơ sở dữ liệu sẽ xóa toàn bộ dữ liệu!
  • Để tránh lỗi vô tình, bạn cũng có thể thêm IF EXISTS .
    DROP DATABASE IF EXISTS my_database;
    

Lệnh này sẽ hoàn thành mà không có lỗi ngay cả khi my_database không tồn tại.

3.5 Các lỗi thường gặp và cách khắc phục

3.5.1 “Access denied for user” error

Ví dụ lỗi:

ERROR 1044 (42000): Access denied for user 'user_name'@'localhost' to database 'my_database'
Cách khắc phục
  • Cấp quyền bằng lệnh GRANT command
    GRANT ALL PRIVILEGES ON my_database.* TO 'user_name'@'localhost';
    FLUSH PRIVILEGES;
    

3.5.2 “Can’t drop database” error

Ví dụ lỗi:

ERROR 1010 (HY000): Error dropping database (can't rmdir './my_database', errno: 39)
Cách khắc phục
  • Khởi động lại MySQL
    sudo systemctl restart mysql
    
  • Xóa tất cả các bảng trong my_database trước, sau đó chạy DROP DATABASE .

3.6 Tóm tắt

Trong phần này, bạn đã học cách tạo, chọn, liệt kê và xóa các cơ sở dữ liệu.

4. Các thao tác Bảng

After creating a database, you need to create tables inside it to organize data. A table is like a grid for storing data, consisting of columns and rows (records).

In this section, we will explain basic operations such as creating, checking, listing, and deleting tables in detail.

4.1 Tạo một Bảng

To create a table, use the CREATE TABLE command. If you run the following SQL, it creates a table named users.

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

4.1.1 Giải thích từng thành phần khi tạo bảng

  • id INT AUTO_INCREMENT PRIMARY KEY
  • Cột id là một số nguyên (INT), tự động tăng (AUTO_INCREMENT), và được đặt làm khóa chính (PRIMARY KEY).
  • name VARCHAR(50) NOT NULL
  • Cột name là một chuỗi (VARCHAR) tối đa 50 ký tự và là bắt buộc vì NOT NULL .
  • email VARCHAR(100) UNIQUE NOT NULL
  • Cột email là một chuỗi tối đa 100 ký tự, và ràng buộc UNIQUE ngăn chặn các địa chỉ email trùng lặp.
  • created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  • Cột created_at tự động đặt ngày/giờ hiện tại làm giá trị mặc định.
Thông báo khi thành công
Query OK, 0 rows affected (0.02 sec)

4.2 Kiểm tra Cấu trúc Bảng

To check the structure of a table you created, use DESC or SHOW COLUMNS.

DESC users;

Or

SHOW COLUMNS FROM users;

Example output:

+------------+--------------+------+-----+-------------------+----------------+
| Field      | Type         | Null | Key | Default           | Extra          |
+------------+--------------+------+-----+-------------------+----------------+
| id         | int(11)      | NO   | PRI | NULL              | auto_increment |
| name       | varchar(50)  | NO   |     | NULL              |                |
| email      | varchar(100) | NO   | UNI | NULL              |                |
| created_at | timestamp    | YES  |     | CURRENT_TIMESTAMP |                |
+------------+--------------+------+-----+-------------------+----------------+

4.3 Liệt kê Các Bảng

To list the tables that exist in the current database, run the SHOW TABLES command.

SHOW TABLES;

Example output:

+------------------+
| Tables_in_mydb   |
+------------------+
| users            |
| products         |
| orders           |
+------------------+

4.4 Xóa một Bảng

To delete a table you no longer need, use the DROP TABLE command.

DROP TABLE users;

4.4.1 Lưu ý quan trọng khi xóa bảng

  • Cẩn thận: xóa một bảng sẽ xóa vĩnh viễn dữ liệu!
  • Để tránh lỗi khi xóa, thêm IF EXISTS .
    DROP TABLE IF EXISTS users;
    
Thông báo khi thành công
Query OK, 0 rows affected (0.01 sec)

4.5 Đặt lại Dữ liệu Bảng (Xóa Tất cả Các Hàng)

If you want to keep the table structure but delete only the data inside, use TRUNCATE TABLE.

TRUNCATE TABLE users;
Sự khác biệt so với DROP TABLE
  • DROP TABLE xóa toàn bộ bảng.
  • TRUNCATE TABLE chỉ xóa dữ liệu và giữ lại cấu trúc bảng.

4.6 Các Lỗi Thường Gặp và Cách Khắc Phục

4.6.1 Lỗi “Table already exists”

Example error:

ERROR 1050 (42S01): Table 'users' already exists
Cách khắc phục
  • Kiểm tra các bảng hiện có
    SHOW TABLES;
    
  • Tạo bảng với IF NOT EXISTS
    CREATE TABLE IF NOT EXISTS users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(50) NOT NULL,
        email VARCHAR(100) UNIQUE NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    

4.6.2 Lỗi “Unknown table”

Example error:

ERROR 1051 (42S02): Unknown table 'users'
Cách khắc phục
  • Kiểm tra xem bảng có tồn tại hay không bằng cách sử dụng SHOW TABLES;
  • Nếu nó không tồn tại, thêm IF EXISTS
    DROP TABLE IF EXISTS users;
    

4.7 Tóm tắt

Trong phần này, chúng tôi đã đề cập đến các thao tác cơ bản với bảng MySQL: tạo, kiểm tra và xóa bảng.