Skip to content

Cơ sở dữ liệu ​

FlashPanel hỗ trợ MySQL, MariaDB, PostgreSQL và MongoDB. Sau khi cài, mỗi loại có một menu riêng mang tên ứng dụng (ví dụ MySQL, MariaDB) trong menu của máy chủ. Tại đó bạn tạo cơ sở dữ liệu, tạo người dùng, nhập/xuất dữ liệu và (với MySQL/MariaDB) chỉnh cấu hình.

Cài đặt cơ sở dữ liệu ​

Khi tạo máy chủ: ở bước Chọn ứng dụng cài đặt sẵn của trang kết nối máy chủ, chọn MySQL hoặc MariaDB (chỉ chọn được một trong hai; MySQL được chọn sẵn). Bạn có thể chọn thêm PostgreSQL và MongoDB.

Sau khi đã có máy chủ: cài từ menu Ứng dụng của máy chủ (xem Ứng dụng).

Tài khoản quản trị cơ sở dữ liệu

  • MySQL/MariaDB: khi máy chủ cài đặt xong, FlashPanel gửi email thông báo cho bạn, trong đó có mục MySQL/MariaDB Information gồm tài khoản (flashpanel) và mật khẩu được tạo ngẫu nhiên.
  • PostgreSQL: khi PostgreSQL cài xong, FlashPanel gửi email chứa tài khoản quản trị (Super User, cũng là flashpanel) và mật khẩu.

Hãy lưu lại các thông tin này ở nơi an toàn.

Tạo cơ sở dữ liệu ​

  1. Mở menu cơ sở dữ liệu của máy chủ (ví dụ MySQL).
  2. Trong phần Cơ sở dữ liệu, bấm Tạo cơ sở dữ liệu.
  3. Nhập Tên cơ sở dữ liệu. Nếu muốn, chọn người dùng được phép truy cập ở ô Quản lý bởi.
  4. Bấm Lưu.

Tạo người dùng cơ sở dữ liệu ​

  1. Trong phần Người dùng cơ sở dữ liệu, bấm Tạo người dùng.
  2. Nhập Tên người dùng và Mật khẩu (bấm biểu tượng chìa khóa để tạo mật khẩu ngẫu nhiên).
  3. Với MySQL/MariaDB: bật Truy cập từ xa nếu người dùng cần kết nối từ máy khác (xem Truy cập MySQL từ xa), và chọn Authentication Plugin nếu ứng dụng của bạn yêu cầu (để mặc định nếu không chắc).
  4. Chọn các cơ sở dữ liệu người dùng được dùng:
    • MySQL/MariaDB, PostgreSQL: chọn ở ô Cấp quyền cho cơ sở dữ liệu.
    • MongoDB: chọn Cơ sở dữ liệu và Vai trò; bấm Thêm vai trò để thêm nhiều cặp.
  5. Bấm Lưu.

Nhập cơ sở dữ liệu ​

Bạn có thể nhập tệp dump .sql hoặc .sql.gz vào một cơ sở dữ liệu có sẵn.

Từ trang cơ sở dữ liệu

  1. Bấm Import ở dòng cơ sở dữ liệu cần nhập.
  2. Tải lên tệp dump. Đánh dấu Xóa file sau khi nhập nếu muốn xóa tệp khỏi máy chủ sau khi xong.
  3. Bấm Nhập cơ sở dữ liệu.

Từ Quản Lý File (khi tệp đã nằm trên máy chủ)

  1. Mở Quản Lý File, tìm tệp dump.
  2. Bấm chuột phải vào tệp, chọn Nhập cơ sở dữ liệu.
  3. Chọn cơ sở dữ liệu đích ở ô Cơ sở dữ liệu, bấm Gửi.

Xuất cơ sở dữ liệu ​

  1. Bấm Export ở dòng cơ sở dữ liệu cần xuất.
  2. Trong hộp thoại Tải xuống cơ sở dữ liệu, bấm Tạo bản sao lưu.
  3. Khi bản sao lưu được tạo xong, bấm Tải Về. Tệp tự động bị xóa khỏi máy chủ sau 3 giờ.

Để sao lưu định kỳ lên Google Drive, S3…, dùng tính năng Sao lưu.

Đồng bộ từ máy chủ ​

Nếu bạn tạo hoặc xóa cơ sở dữ liệu/người dùng trực tiếp trên máy chủ (không qua FlashPanel), bấm Đồng bộ từ máy chủ ở đầu trang để cập nhật danh sách theo thực tế.

Cập nhật cấu hình MySQL/MariaDB ​

Với MySQL/MariaDB, phần Cập nhật cấu hình MySQL (hoặc MariaDB) ở cuối trang cho phép chỉnh các thông số quan trọng mà không cần sửa tệp cấu hình. Mỗi ô có mô tả ngắn ngay bên dưới.

  1. Bấm Khuyến nghị để điền các giá trị khuyến nghị, hoặc tự sửa từng ô.
  2. Bấm Cập nhật để lưu và áp dụng.

Bấm my.cnf để xem tệp cấu hình hiện tại, Làm mới để tải lại giá trị đang dùng trên máy chủ.

Các thông số có thể chỉnh:

Thông sốÝ nghĩa
portCổng MySQL lắng nghe kết nối
bind-addressĐịa chỉ IP MySQL nhận kết nối (đổi khi cần truy cập từ xa)
skip-log-binTắt binary log để tăng hiệu suất khi không dùng replication
max_connectionsSố kết nối đồng thời tối đa
max_allowed_packetKích thước tối đa của một gói dữ liệu (tăng nếu nhập dữ liệu lớn bị lỗi)
innodb_buffer_pool_sizeRAM dành cho bộ đệm dữ liệu InnoDB; thông số ảnh hưởng hiệu suất nhiều nhất
innodb_buffer_pool_instancesSố phân vùng của bộ đệm InnoDB
innodb_flush_log_at_trx_commitCân bằng giữa an toàn dữ liệu và tốc độ ghi
slow_query_logBật ghi nhật ký các truy vấn chậm
long_query_timeSố giây để một truy vấn bị coi là chậm
sort_buffer_sizeBộ nhớ cho thao tác sắp xếp (ORDER BY, GROUP BY)
binlog_expire_logs_secondsThời gian giữ binary log trước khi tự xóa
innodb_flush_methodCách InnoDB ghi dữ liệu xuống ổ đĩa

TIP

innodb_buffer_pool_size thường đặt khoảng 70–80% RAM nếu máy chủ chỉ chạy cơ sở dữ liệu. Nếu máy chủ còn chạy web server và PHP, hãy đặt thấp hơn để chừa RAM cho chúng.

Khắc phục sự cố ​

Cảnh báo "'mysql_native_password' is deprecated" ​

Log của MySQL có dòng:

text
[Warning] Plugin mysql_native_password reported: 'mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead

Đây chỉ là cảnh báo, MySQL vẫn hoạt động bình thường. Để tương thích với các ứng dụng cũ, FlashPanel bật plugin xác thực mysql_native_password khi cài MySQL, và MySQL ghi cảnh báo này mỗi khi một người dùng dùng plugin đó đăng nhập. MySQL 9 sẽ bỏ hẳn plugin này, vì vậy hãy chuyển người dùng sang caching_sha2_password khi thuận tiện:

  1. Trong phần Người dùng cơ sở dữ liệu, bấm biểu tượng sửa ở dòng của người dùng.
  2. Chọn caching_sha2_password ở ô Authentication Plugin. Nếu cột Có thể sử dụng yêu cầu đổi mật khẩu, nhập thêm Mật khẩu mới và cập nhật mật khẩu đó trong ứng dụng.
  3. Bấm Lưu.

Ứng dụng chạy PHP 7.4 trở lên và các driver MySQL hiện nay đều hỗ trợ caching_sha2_password. Nếu một ứng dụng cũ không kết nối được nữa, chuyển người dùng đó về lại mysql_native_password.

Với MySQL 8.0, người dùng mới không chỉ định plugin cũng sẽ dùng mysql_native_password, do dòng default_authentication_plugin=mysql_native_password trong /etc/mysql/my.cnf. Để đổi mặc định, bấm Cấu hình ở dòng MySQL trong trang Ứng dụng, sửa dòng đó thành default_authentication_plugin=caching_sha2_password, lưu tệp rồi bấm Khởi động lại. Với MySQL 8.4, giữ nguyên dòng mysql_native_password=ON cho tới khi không còn người dùng nào dùng plugin cũ, nếu không những người dùng đó sẽ không đăng nhập được nữa.

Lỗi "Table is crashed and last repair failed" (Error 144) ​

MySQL/MariaDB không khởi động được và log lỗi có các dòng như:

text
[ERROR] mariadbd: Got error '144 "Table is crashed and last repair failed"' for './mysql/db'
[ERROR] Fatal error: Can't open and lock privilege tables: Got error '144 "Table is crashed and last repair failed"' for './mysql/db'

Tệp của một bảng bị hỏng (thường sau khi máy chủ bị treo, mất điện hoặc đầy ổ đĩa) và lần sửa tự động cũng thất bại. Vì cơ sở dữ liệu không khởi động được, bạn cần sửa bảng ở chế độ offline. Các bước dưới đây sửa bảng mysql.db trên MariaDB; thay mariadb bằng mysql nếu máy chủ dùng MySQL. Chạy các lệnh bằng root trong Terminal hoặc qua SSH.

WARNING

Nếu ổ đĩa còn chỗ, hãy sao chép thư mục dữ liệu /var/lib/mysql ra nơi an toàn trước khi sửa.

  1. Xác định storage engine của bảng qua phần mở rộng của tệp trong /var/lib/mysql/<database>/:

    bash
    ls -lh /var/lib/mysql/mysql/db.*
    • .MAI và .MAD: Aria, sửa bằng aria_chk.
    • .MYI và .MYD: MyISAM, sửa bằng myisamchk.
    • .ibd: InnoDB. Các công cụ này không áp dụng được, hãy liên hệ bộ phận hỗ trợ của FlashPanel.
  2. Dừng hẳn cơ sở dữ liệu để nó không tự khởi động lại trong lúc sửa, rồi kiểm tra không còn tiến trình nào (lệnh cuối phải không in ra gì):

    bash
    sudo systemctl stop mariadb
    sudo systemctl mask mariadb
    pgrep -a -f 'mysqld|mariadbd'
  3. Sửa bảng:

    bash
    # Aria
    cd /var/lib/mysql/mysql
    sudo aria_chk -r db
    
    # MyISAM
    sudo myisamchk -r /var/lib/mysql/<database>/<table>.MYI

    Thông báo kiểu Can't find file ... aria_log_control là bình thường, quá trình sửa vẫn tiếp tục.

  4. Khởi động lại cơ sở dữ liệu:

    bash
    sudo systemctl unmask mariadb
    sudo systemctl start mariadb

    Nếu vẫn lỗi và log nhắc tới một bảng khác (ví dụ mysql.global_priv), lặp lại bước 1–4 cho bảng đó.

  5. Khi cơ sở dữ liệu đã chạy, kiểm tra toàn bộ bảng bằng tài khoản quản trị được gửi qua email khi cài MySQL/MariaDB:

    bash
    mysqlcheck -u flashpanel -p -Asc

    Bảng nào còn lỗi thì sửa bằng mysqlcheck -u flashpanel -p -r database_name table_name.

Xem thêm ​