Ở 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
1. Mô hình
2. Chuẩn bị
3. Các câu lệnh quản lý dịch vụ
4. File làm việc của MariaDB trên CentOS7
4.1. Config file và Log file
4.2. Đổi port, bind-address
5. Câu lệnh SQL cơ bản sử dụng máy chủ cơ sở dữ liệu MariaDB
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 và /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é!