Overview
Building VillageSQL from source gives you the latest features and allows you to customize the build for your specific environment.Prerequisites
Before you begin, ensure you have the following installed:- Git - For cloning the repository
- CMake 3.16 or higher - Build system generator
- C++ Compiler - GCC 8+, Clang 8+, or MSVC 2019+
- Build tools - make, ninja, or equivalent
- Development libraries - OpenSSL, ncurses, pkg-config, bison, and other MySQL dependencies
Install Dependencies
Ubuntu/Debian:Step 1: Clone the Repository
Clone the VillageSQL Server repository from GitHub. Clone into your home directory so the CMake steps below work without modification:The repository is several GB due to the MySQL codebase.
Step 2: Configure with CMake
Create a build directory outside the repository and configure the project: Linux:Linux users: Use
$HOME for absolute paths. macOS users: Use ~ (tilde). Replace the repository path with your actual clone location if different.CMake Options Explained
<path-to-repo>- Path to the cloned VillageSQL repository (use$HOMEon Linux,~on macOS)-DWITH_DEBUG=1- Enables debug symbols (recommended for development)-DCMAKE_INSTALL_PREFIX=~/mysql- Sets installation directory-DWITH_SSL=system- Uses system OpenSSL library (required on macOS)
Additional CMake Options
Production build without debug symbols: Linux:If you need to reconfigure, clear the CMake cache first (run from within the build directory):
Step 3: Compile the Code
Build VillageSQL using make with parallel compilation. From within the build directory: Build only the server (recommended for development):Step 4: Initialize the Database
Before starting the server for the first time, initialize the data directory: Linux: Production (with generated password - recommended):--user=root flag:
Use
--initialize (with password) for production-like setups. Use --initialize-insecure (no password) only for local development and testing. When using --initialize, a temporary password will be generated and printed to the console: A temporary password is generated for root@localhost: <password>Step 5: Start the Server
Start the VillageSQL server: Linux:Step 6: Connect with MySQL Client
Open a new terminal and connect to the server using the MySQL client: Linux: If using —initialize-insecure (no password):Verify Installation
Check that you’re running VillageSQL:Step 7: Set Up Users and Database
Change Root Password
If you used--initialize, change the temporary password:
Create a Development User
For daily development, create a non-root user:Create a Database
Troubleshooting
Build Fails with Missing Dependencies
Install the required development packages for your platform. Check the error message for specific missing libraries.Server Won’t Start
- Verify the data directory was initialized:
ls ~/mysql-data/data/ - Check if another MySQL/VillageSQL instance is using port 3306
- Review error logs in
~/mysql-data/data/*.err
Extension Installation Fails
- Ensure the extension library (
.soor.dll) exists in the build output - Check that VillageSQL has the necessary permissions to load extensions
- Verify the extension name and .veb filename are correct
Next Steps
Using Extensions
Learn how to install, update, and manage VillageSQL extensions.
Creating Extensions
Build your own custom extensions for VillageSQL.
Getting Started
Quick start guide for VillageSQL.

