Tin tức, hướng dẫn và chia sẻ về công nghệ

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

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 root@192.168.136.133
  • 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

Leave a Reply

Your email address will not be published. Required fields are marked *