Windows - MariaDB File Key Management Setup Guide

Introduction
This guide provides step-by-step instructions to configure File Key Management (FKM) for MariaDB on Windows. The File Key Management plugin allows MariaDB to securely store encryption keys in a local key file, enabling data-at-rest encryption for tables, logs, and temporary files.
Step 1: Stop MariaDB Service
net stop mariadb
Step 2: Create Encryption Key Directory
mkdir "C:\Program Files\MariaDB 10.6\data\encryption"
Step 3: Generate Encryption Keys
$keyFile = "C:\Program Files\MariaDB 10.6\data\encryption\keyfile.txt"
Remove-Item $keyFile -ErrorAction SilentlyContinue
# Generate 3 random 256-bit keys
for ($i = 1; $i -le 3; $i++) {
$randomBytes = New-Object byte[] 32
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($randomBytes)
$hexKey = [BitConverter]::ToString($randomBytes).Replace('-', '')
"$i;$hexKey" | Out-File -FilePath $keyFile -Append -Encoding ASCII -NoNewline
if ($i -lt 3) { "`r`n" | Out-File -FilePath $keyFile -Append -Encoding ASCII -NoNewline }
}
Check keys:
type "C:\Program Files\MariaDB 10.6\data\encryption\keyfile.txt"
Step 4: Configure my.ini
notepad "C:\Program Files\MariaDB 10.6\data\my.ini"
Add or update the following sections:
[mysqld]
datadir=C:/Program Files/MariaDB 10.6/data
port=3306
innodb_buffer_pool_size=1019M
# Encryption Configuration
plugin_load_add = file_key_management
file_key_management_filename = C:/Program Files/MariaDB 10.6/data/encryption/keyfile.txt
# Enable encryption
innodb_encrypt_tables = ON
innodb_encrypt_log = ON
innodb_encryption_threads = 4
# SSL Configuration
ssl-ca="C:/MySQL/ssl/ca.pem"
ssl-cert="C:/MySQL/ssl/server-cert.pem"
ssl-key="C:/MySQL/ssl/server-key.pem"
require_secure_transport=ON
[client]
port=3306
plugin-dir=C:/Program Files/MariaDB 10.6/lib/plugin
Step 5: Start MariaDB Service
net start mariadb
Step 6: Verify Encryption on Windows
Inside the MariaDB prompt:
-- Check if the encryption plugin is active
SHOW PLUGINS;
Expected output includes:
+-----------------------+--------+------------+----------------------------+-------+
| Name | Status | Type | Library | License |
+-----------------------+--------+------------+----------------------------+-------+
| file_key_management | ACTIVE | ENCRYPTION | file_key_management.dll | GPL |
+-----------------------+--------+------------+----------------------------+-------+