Quản lý cơ sở dữ liệu MariaDB trên CentOS 7

30/12/2020

MariaDB là một hệ quản trị cơ sở dữ liệu được sử dụng phổ biến hiện nay. Vậy nó làm cách nào để quản lý được cơ sở dữ liệu đó? Đó chính là nội dung của bài viết này. Các bạn cùng theo dõi nhé!

Mục lục

    1.  Mô hình

    2. Chuẩn bị

    3. Database

     3.1. Tạo cơ sở dữ liệu và tạo bảng

     3.2. Các thao tác với bảng và cột

    4. User Database

    5. Kết nối vào MariaDB Server từ Client

    1. Mô hình

    MariaDB Server chạy port mặc định 3306. MariaDB Server và MariaDB Client ping thông với nhau.

    2. Chuẩn bị

    • 2 máy ảo cài hệ điều hành CentOS 7, có kết nối Internet. 1 máy cài MariaDB Server, 1 máy cài MariaDB Client.
    • Tài khoản có thể đăng nhập vào hệ thống và có quyền sudo. Hướng dẫn dưới đây sử dụng tài khoản root.
    • Yêu cầu tối thiểu đối với các thông số:

    3. Database

     3.1. Tạo cơ sở dữ liệu và tạo bảng

    • Dùng user root của người dùng hệ thống SSH vào MariaDB Server để thực hiện các thao thác quản lý Database:
    ssh root@192.168.136.132
    • Đăng nhập vào user root của MariaDB
    mysql -u root -p
    • Tạo database
    create database [database_name];

    Ví dụ: Tạo CSDL có tên là test

    create database test;
    • Truy cập vào database
    use [database_name]; 

    Ví dụ:

     use test; 
    • Tạo bảng trong database
    create  table [table name](trường trong bảng);

    Ví dụ: tạo bảng có tên là sinhvien với các trường mssv,ho,ten,tuoi,diemthi trong database test

    create table sinhvien(      mssv int not null auto_increment,      ho varchar(255) not null,      ten varchar(255) not null,      tuoi int not null,      diemthi float(4,2) not null,      primary key (mssv)      );
    • Kiểm tra các bảng hiện có
    show tables;

    Output:

     +----------------+  | Tables_in_test |  +----------------+  | sinhvien       |  +----------------+

    3.2. Các thao tác với bảng trong database

    • Kiểm tra các trường trong bảng:
     desc [table_name]; 

    Ví dụ: Kiểm tra các trường trong bảng sinh viên

     desc sinhvien;

    Output:

    • Kiểm tra toàn bộ dữ liệu trong bảng
    select * from [table_nam];

    Ví dụ: Kiểm tra toàn bộ dữ liệu trong bảng sinhvien

     select * from sinhvien; 
    • Chèn dữ liệu vào bảng
    INSERT INTO TABLE_TEN (cot1, cot2, cot3,...cotN)   VALUES (giatri1, giatri2, giatri3,...giatriN); hoặc INSERT INTO TABLE_TEN VALUES (giatri1,giatri2,giatri3,...giatriN); 

    Ví dụ: Thực hiện dữ liệu vào bảng sinhvien

    insert into sinhvien     values (1,'Nguyen','Hien',19,9),     (2,'Phung','Ngoc',19,10),     (3,'Nguyen','Hung',19,9);

    Kết quả:

     +------+--------+------+------+---------+  | mssv | ho     | ten  | tuoi | diemthi |  +------+--------+------+------+---------+  |    1 | Nguyen | Hien |   19 |    9.00 |  |    2 | Phung  | Ngoc |   19 |   10.00 |  |    3 | Nguyen | Hung |   19 |    9.00 |  +------+--------+------+------+---------+ 
    • Đổi tên bảng:
    rename table first to second;

    Ví dụ: Đổi tên bảng từ sinhvien thành sinh_vien

     rename table sinhvien to sinh_vien; 
    • Xóa dữ liệu trong bảng
     delete from [table_name] where [column_name=gia_tri]; 

    Ví dụ: Xóa dữ liệu có liên quan đến dữ liệu mssv=3

     delete from sinh_vien where mssv=3; 
    • Xóa cột trong bảng:
    alter table [table_name] drop column [column_name];

    Ví dụ: Xóa cột tuổi

     alter table sinh_vien drop column tuoi; 
    • Thêm cột vào bảng
    alter table [table_name] add [column_name] [kieu_truong];

    Ví dụ: thêm cột “quequan”

    alter table sinh_vien add quequan varchar(255) not null;
    • Thêm dữ liệu vào cột mới/sửa dữ liệu có sẵn
    update [table_name] set [column_name]="new_data" where [column_name]="data";

    Ví dụ: Cập nhật dữ liệu VinhPhuc vào cột quequan cho sinh viên có mssv=1

    update sinh_vien  set quequan="VinhPhuc"  where (MSSV=1);  Kết quả:  +------+--------+------+---------+----------+  | mssv | ho     | ten  | diemthi | quequan  |  +------+--------+------+---------+----------+  |    1 | Nguyen | Hien |    9.00 | VinhPhuc |  |    2 | Phung  | Ngoc |   10.00 |          |  +------+--------+------+---------+----------+
    • Truy vấn thông tin của table trong database theo điều kiện
     SELECT column(s) FROM table WHERE column = value; 

    Các tùy chọn:
    = : lọc giá trị là
    != hoặc <> : lọc giá trị không phải là
    > : lọc các dữ liệu lớn hơn một giá trị bất kì tùy chọn
    < : lọc các dữ liệu nhỏ hơn một giá trị bất kì tùy chọn
    >= : lọc các dữ liệu lớn hơn hoặc bằng một giá trị bất kì tùy chọn
    <= : lọc các dữ liệu nhỏ hơn hoặc bằng một giá trị bất kì tùy chọn
    between x and y : lọc các giá trị trong khoảng, xy là các giá trị bất kì tùy chọn

    Ví dụ: Truy vấn thông tin sinh viên có điểm thi lớn hơn 8

     SELECT * FROM sinh_vien WHERE diemthi > 8; 

    Kết quả:

     +------+--------+------+---------+----------+  | mssv | ho     | ten  | diemthi | quequan  |  +------+--------+------+---------+----------+  |    1 | Nguyen | Hien |    9.00 | VinhPhuc |  |    2 | Phung  | Ngoc |   10.00 |          |  |    3 | Nguyen | Hung |    9.00 | HaNoi    |  |    5 | Dinh   | Niem |    9.00 | ThaiBinh |  +------+--------+------+---------+----------+
    • Xóa bảng:
    drop table [table_name]

    Một số thao tác nâng cao bạn có thể xem thêm tại đây

    4. User Database(Thực hiện trên MariaDB Server)

    • Tạo user database
    create user 'user'@'hostname' identified by 'password';

    Ví dụ: tạo user test với password là abc@123

     create user 'test'@'%' identified by 'abc@123'; 

    Các tùy chọnhostname:
    [localhost] – chỉ cho phép kết nối trên máy chạy máy chủ MariaDB.
    [IP] – cho phép một thiết bị/một dải IP cụ thể có thể truy cập từ xa.
    [%] – cho phép truy cập từ xa từ tất cả các địa điểm .

    • Phân quyền cho user database

    Các quyền mà user database có thể được cấp để sử dụng database

    ALL PRIVILEGES – cấp cho user tất cả các đặc quyền.
    CREATE – user có quyền tạo CSDL và bảng.
    DROP – user xóa CSDL và bảng.
    DELETE – user được phép xóa các hàng khỏi một bảng cụ thể.
    INSERT – user được phép chèn các hàng vào bảng cụ thể.
    SELECT – user được phép đọc CSDL.
    UPDATE – user được phép cập nhật các hàng của bảng.

    Cú pháp cấp các quyền cụ thể cho user

    GRANT [type of permission] ON [database name].[table name] TO 'databaseusername'@'hostname';

    Ví dụ 1: Cấp tất cả quyền cho user test trên database test

     grant all privileges on test. * to 'test'@'%'; 

    Ví dụ 2: Cấp tất cả quyền cho user test thực hiện trên bảng sinh_vien

     grant all privileges on test.sinh_vien to 'test'@'%'; 

    Ví dụ 3: Cấp nhiều quyền cụ thể cho user test trên database test

         grant SELECT, INSERT on test.* to 'test'@'%'; 
    • Hiển thị các quyền của user
    SHOW GRANTS FOR 'database_user'@'hostname';

    Ví dụ: SHOW GRANTS FOR ‘test’@’%’;

    Kết quả:

    • Thu hồi các quyền từ user
    REVOKE ALL PRIVILEGES ON database_name.* TO 'database_user'@'hostname';

    Xóa user database hiện có

    DROP USER 'user'@'hostname';

    5. Kết nối từ Client vào MariaDB Server

    Dùng user root của người dùng hệ thống SSH vào MariaDB Client

    ssh root@192.168.136.133

    Truy cập vào database bằng user test

    mysql -h 192.168.136.132 -u test -p

    Nếu xuất hiện thông báo lỗi như dưới, kiểm tra lại firewall đã tắt chưa(hoặc đã cấu hình cho phép mở port 3306) và bind-address

    ERROR 2002 (HY000): Can't connect to MySQL server on '192.168.136.132' (115)

    Kiểm tra database mà user test được phân quyền

    show databases;

    Output:

     +--------------------+  | Database           |  +--------------------+  | information_schema |  | test               |  +--------------------+

    Hiện tại bạn đã có thể thực hiện thao tác bình thường trên database được cấp quyền. Để trở về MariaDB Client, sử dụng tổ hợp phím Ctrl+C.

    Bài viết liên quan

    ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Sử dụng lệnh virsh với KVM

Bài viết này ta sẽ đi tìm hiểu về lệnh virsh – một công cụ command-line hữu dụng khi làm...
30/12/2020

Install Python PIP on CentOS7

Python PIP is a package manager for Python, just like Yum is a package manager for CentOS 7 and RHEL 7. In this article,...
28/12/2020

LDAP [Phần 1] – Hướng dẫn cài đặt LDAP trên CentOS 7

LDAP viết tắt của Lightweight Directory Access Protocol là một giao thức dạng client-server được phát...
30/12/2020