Thao tác quản trị MariaDB trên CentOS 7

30/12/2020
Chưa phân loại

bài viết trước, mình đã hướng dẫn các bạn các bước để cài đặt MariaDB 10.4.7 trên CentOS 7. Centos 7 lệnh khác khá nhiều so với CentOS 6 do đó có thể bạn sẽ cảm thấy hơi khó khăn khi sử dụng các dòng lệnh để thao tác những tác vụ cần thiết. Bài viết này, mình sẽ cùng các bạn tìm hiểu về một vài tác vụ quản trị đơn giản giúp các bạn dễ dàng làm việc hơn với công cụ quản lý CDSL MariaDB trên CentOS 7 nhé.

Mục lục

Mô hình

Chuẩn bị

  • 1 máy ảo cài hệ điều hành CentOS 7, có kết nối Internet.
  • 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ố:

Các câu lệnh quản lý dịch vụ

Thao tác cơ bản với MariaDB

  • Truy cập vào MariaDB Server
ssh [email protected]
  • Khởi động dịch vụ
systemctl start mariadb
  • Cho phép dịch vụ tự động chạy khi khởi động(chạy cùng hệ thống)
systemctl enable mariadb
  • Stop dịch vụ
 systemctl stop mariadb
  • Kiểm tra trạng thái hoạt động của MariaDB
 systemctl status mariadb 
  • Kiểm tra user, group

Khi bạn cài đặt MariaDB lên máy CentOS 7 có 1 tài khoản mặc định đã được tạo ra giúp bạn quản lý MariaDB. Tài khoản này là tài khoản root có tên là mysql, group là MariaDB Server. Bạn có thể kiểm tra cụ thể hơn với câu lệnh sau đây:

cat /etc/passwd | grep mysql
Output:
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
  • Kiểm tra cổng mà MariaDB đang sử dụng
netstat -plnt | grep mysql
OUTPUT:
tcp6 0 0 :::3306 :::* LISTEN 6833/mysqld

MariaDB mặc định sử dụng cổng 3306.

4. File làm việc của MariaDB trên CentOS7

4.1. Config file và Log file

Tìm kiếm folder chứa tập tin cấu hình của MariaDB

Theo mặc định, bạn sẽ tìm thấy tệp cấu hình của MariaDB tại /etc/my.cnf

Nếu không có, bạn có thể sử dụng mysqldđể tìm tệp cấu hình bằng cách chạy lệnh:

mysqld --help --verbose | head

Ở đầu ra sẽ xuất hiện:

Default options are read from the following files in the given order: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf

MariaDB config file:

Đọc file /etc/my.cnf /etc/my.cnf.d/server.cnf để xem cấu hình có sẵn. Dưới đây là 1 file example config

 [client]  port = 3306  socket = /tmp/mysql.sock   [mysqld]  port = 3306  socket = /tmp/mysql.sock  back_log = 50  max_connections = 100  wait_timeout = 256  max_connect_errors = 10  table_open_cache = 2048  max_allowed_packet = 16M  binlog_cache_size = 512M  max_heap_table_size = 512M  read_buffer_size = 64M  read_rnd_buffer_size = 64M  sort_buffer_size = 64M  join_buffer_size = 64M  thread_cache_size = 8  thread_concurrency = 8  thread_stack = 240K  query_cache_size = 128M  query_cache_limit = 2M  ft_min_word_len = 4  default-storage-engine = InnoDB  transaction_isolation = REPEATABLE-READ  tmp_table_size = 512M  log-bin=mysql-bin  binlog_format=mixed  slow_query_log  long_query_time = 2  server-id = 1  INNODB options  innodb_buffer_pool_size = 4G  innodb_buffer_pool_instances = 8  innodb_data_file_path = ibdata1:10M:autoextend  innodb_write_io_threads = 8  innodb_read_io_threads = 8  innodb_thread_concurrency = 16  innodb_flush_log_at_trx_commit = 1  innodb_log_buffer_size = 1GB  innodb_change_buffering = all  innodb_change_buffer_max_size = 25  innodb_log_file_size = 512M  innodb_log_files_in_group = 3  innodb_max_dirty_pages_pct = 90  innodb_lock_wait_timeout = 256   [mysqldump]  quick  max_allowed_packet = 50M   [mysql]  no-auto-rehash   [mysqlhotcopy]  interactive-timeout   [mysqld_safe]  open-files-limit = 8192

MariaDB tổ chức file cấu hình dựa theo các nhóm cấu hình
Nhóm cấu hình dành cho Server
[server] : tùy chọn được đọc bởi MariaDB Server
[mysqld] : tùy chọn được đọc bởi mysqld, bao gồm cả MariaDB Server và MySQL Server
[mariadb] : tùy chọn được đọc bởi MariaDB Server
[mysqld-X.Y] : tùy chọn được đọc bởi một phiên bản cụ thể mysqld, bao gồm cả MariaDB Server và MySQL Server. Ví dụ:[mysqld-5.5]
[mariadb-X.Y] : tùy chọn được đọc bởi một phiên bản cụ thể của MariaDB Server. Ví dụ:[mariadb-10.3]
[galera] : tùy chọn được đọc bởi MariaDB Server, nhưng chỉ khi nó được biên dịch với sự hỗ trợ của Galera Cluster
Nhóm cấu hình dành cho Client
[client] : tùy chọn được đọc bởi tất cả máy MariaDB và MySQL Client . Ví dụ: mysqldump.
[client-server] : tùy chọn được đọc bởi MariaDB Client và MariaDB Server. Thường được dùng với cấu hình socket, port.
[client-mariadb] : tùy chọn được đọc bởi MariaDB Client
Nhóm cấu hình tự định nghĩa
Các nhóm cấu hình này có thể được cấu hình trong /etc/my.cnf hoặc cấu hình riêng lẻ từng file trong /etc/my.cnf.d/

Xem chi tiết các option config file đầy đủ tại đây

  •  Cấu hình Log file

Folder mặc định:

 /var/log/mariadb 

Nếu chưa tồn tại, bổ sung vào file cấu hình

log_error = /var/log/mariadb/mariadb.log 

Lưu cấu hình và khởi động lại MariaDB service để cập nhật cấu hình vừa thay đổi

 systemctl restart mariadb 

Kiểm tra lại xem file mariadb.log đã tồn tại chưa

find mariadb.log /var/log/mariadb
OUTPUT: mariadb.log  /var/log/mariadb  /var/log/mariadb/mariadb.log.rpmsave  /var/log/mariadb/mariadb.log

4.2. Đổi port, bind-address

  • Cấu hình Port running dịch vụ

MariaDB được mặc định chạy cổng 3306 và có thể thay đổi được. Để thay đổi cổng, cấu hình file /etc/my.cnf.d/server.cnf  như sau

[client]
port = [port ban muon sua]

[mysqld]
port = [port ban muon sua]

Ví dụ: đổi port mặc định trên server từ 3306 sang 9988:

Lưu cấu hình và khởi động lại MariaDB service để cập nhật cấu hình vừa thay đổi

 systemctl restart mariadb 

Cấu hình firewall cho phép TCP truy cập từ xa trên cổng mới sửa và restart lại service:

firewall-cmd --add-port=9988tcp   firewall-cmd --permanent --add-port=9988/tcp  systemctl restart mariadb 

Kiểm tra lại port sau khi đã cấu hình thay đổi:

netstat -plnt | grep mysql
OUTPUT: tcp6       0      0 :::9988                 :::*                    LISTEN      8681/mysqld

Truy cập thử vào Database bằng User database trên port mới

  • Cấu hình bind-address

Bind-address cho phép bạn limit việc kết nối vào MariaDB Server đối với server có nhiều interface
[0.0.0.0] : cho phép người dùng truy cập vào MariaDB Server bằng bất kỳ face nào trên server.
[IP] : cho phép người dùng chỉ có thể truy cập vào MariaDB Server từ một interface cụ thể trên MariaDB Server.
[localhost/127.0.0.1] : trường hợp đặc biệt của IP, chỉ cho phép thiết bị nằm trên cùng một server với CSDL mới có quyền truy cập vào.

Ví dụ: Cấp phép truy cập vào MariaDB Server từ bất kỳ cổng nào trên server

bind-address = 0.0.0.0

Lưu cấu hình và khởi động lại MariaDB service để cập nhật cấu hình vừa thay đổi

systemctl restart mariadb

Thay đổi các số liệu trên không cần khởi động lại dịch vụ bằng cách sử dụng user database truy cập vào CSDL và sử dụng lệnh:

set global      max_user_connections = 505,      max_connections = 500,      thread_cache_size = 505;

5. Câu lệnh SQL cơ bản sử dụng máy chủ cơ sở dữ liệu MariaDB

Đăng nhập vào MariaDB với tài khoản root

 mysql -u root -p 

Hiển thị toàn bộ users:

 select user,host from mysql.user; 
Output:  +------+-----------------------+  | user | host                  |  +------+-----------------------+  | root | 127.0.0.1             |  | root | ::1                   |  |      | localhost             |  | root | localhost             |  |      | localhost.localdomain |  | root | localhost.localdomain |  +------+-----------------------+  6 rows in set (0.01 sec)

Xóa null user:

 DELETE FROM mysql.user WHERE user = ' '; 

Xóa tất cả user mà không phải root:

 DELETE FROM mysql.user WHERE NOT (host="localhost" AND user="root"); 

Đổi tên tài khoản root (giúp bảo mật):

 UPDATE mysql.user SET user="mydbadmin" WHERE user="root"; 
Kết quả:  +-----------+-----------------------+  | user      | host                  |  +-----------+-----------------------+  | mydbadmin | 127.0.0.1             |  | mydbadmin | ::1                   |  | mydbadmin | localhost             |  | mydbadmin | localhost.localdomain |  +-----------+-----------------------+  4 rows in set (0.00 sec)

Tạo 1 user mới

 create user 'user'@'hostname' identified by 'password'; 

Gán full quyền cho user vừa tạo

 GRANT ALL PRIVILEGES ON *.* TO  'user'@'hostname';

Hiển thị các đặc quyền của user:

 SHOW GRANTS FOR 'user'@'hostname'; 
Output: 

Tạo database

 create database [database_name];
Ví dụ: create database test;

Xem danh sách database hiện có:

 show databases; 
Output:  +--------------------+  | Database           |  +--------------------+  | information_schema |  | backup             |  | mysql              |  | performance_schema |  | test               |  +--------------------+  5 rows in set (0.00 sec)

Truy cập vào cơ sở dữ liệu

 use  [database_name]; 

Tạo bảng:

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 testdb:

use testdb;  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)   ); 

Hiển thị toàn bộ table hiện có

 show tables; 
Output:  +----------------+  | Tables_in_test |  +----------------+  | sinhvien       |  +----------------+

Hiển thị dữ liệu của bảng:

select * from [table_name];
Output: Empty set (0.00 sec)

Xem thông tin trên bảng

 describe  [table_name]; 
Output: 

Xóa bảng:

drop table  [table_name]; 

Kết luận

Trên đây mình đã cùng các bạn tìm hiểu về một số thao tác quản trị đơn giản giúp bạn dễ dàng làm việc với MariaDB trên CentOS 7. Nếu có gì thắc mắc hãy bình luận để trao đổi với mình nhé!

Tham khảo các bài viết khác

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

PostgreSQL NodeJS Tutorial

Using PostgreSQL from Node.js PostgreSQL is a very popular open source database. It is widely used for almost all types...
28/12/2020

[Zabbix] Giám sát ICMP Ping

Trong một hệ thống gồm rất nhiều server việc kiểm tra xem server nào đang hoạt động và server...
30/12/2020

Bash History Search

We need to type various commands in the shell for various purposes. Sometimes we need to execute same commands multiple...
29/12/2020
Bài Viết

Bài Viết Mới Cập Nhật

SỰ KHÁC BIỆT GIỮA RESIDENTIAL PROXY VÀ PROXY DATACENTER
17/02/2024

Mua Proxy v6 US Private chạy PRE, Face, Insta, Gmail
07/01/2024

Mua shadowsocks và hướng dẫn sữ dụng trên window
05/01/2024

Tại sao Proxy Socks lại được ưa chuộng hơn Proxy HTTP?
04/01/2024

Mua thuê proxy v4 nuôi zalo chất lượng cao, kinh nghiệm tránh quét tài khoản zalo
02/01/2024