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
- 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ố:
- 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:
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ị
3. Database
3.1. Tạo cơ sở dữ liệu và tạo bảng
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, x và y 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.
0 Comments
2 Pingbacks