[
    {
        "UpdateStageName": "Run MariaDB Server",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "Executable",
        "UpdateSourceData": "/bin/bash",
        "UpdateSourceArgs": "-c \"cd mariadb && mariadb/bin/mariadb-admin --socket=\\\"{{$FullBaseDir}}run/mariadbd/mariadbd.sock\\\" ping >/dev/null 2>&1 && exit 0 || mariadb/bin/mariadbd --defaults-file=\\\"{{$FullBaseDir}}my.cnf\\\" --port={{$ServerPort}} --basedir=\\\"{{$FullBaseDir}}mariadb\\\" --datadir=\\\"{{$FullBaseDir}}data\\\" --pid-file=\\\"{{$FullBaseDir}}run/mariadbd/mariadbd.pid\\\" --socket=\\\"{{$FullBaseDir}}run/mariadbd/mariadbd.sock\\\" --bind-address={{$ApplicationIPBinding}} --general-log-file=\\\"{{$FullBaseDir}}log/mariadb/mariadb.log\\\" --wait-timeout=28800 &\"",
        "RunInBackground": true,
        "SkipOnFailure": false
    },
    {
        "UpdateStageName": "Run MariaDB Server",
        "UpdateSourcePlatform": "Windows",
        "UpdateSource": "Executable",
        "UpdateSourceData": "powershell.exe",
        "UpdateSourceArgs": "-NoProfile -Command \"Set-Location -Path 'mariadb'; $env:MYSQL_PWD = \\\"{{RootPassword}}\\\"; & mariadb/bin/mariadb-admin.exe --protocol=pipe --socket={{WindowsSocketName}} --user=root ping *> $null 2>&1; if ($LASTEXITCODE -eq 0) { exit 0 } else { & mariadb/bin/mariadbd.exe --defaults-file=\\\"{{$FullBaseDir}}my.cnf\\\" --port={{$ServerPort}} --basedir=\\\"{{$FullBaseDir}}mariadb\\\" --datadir=\\\"{{$FullBaseDir}}data\\\" --socket={{WindowsSocketName}} --bind-address=0.0.0.0 --general-log-file=\\\"{{$FullBaseDir}}log/mariadb/mariadb.log\\\" --wait-timeout=28800 --named-pipe --console }\"",
        "RunInBackground": true,
        "SkipOnFailure": false
    },
    {
        "UpdateStageName": "Set Up and Upgrade MariaDB",
        "UpdateSourcePlatform": "Linux",
        "UpdateSource": "Executable",
        "UpdateSourceData": "/bin/bash",
        "UpdateSourceArgs": "-c \"cd mariadb && timeout=60; while ((timeout--)); do mariadb/bin/mariadb-admin --socket=\\\"{{$FullBaseDir}}run/mariadbd/mariadbd.sock\\\" ping >/dev/null 2>&1 && break || sleep 1; done; ((timeout<0)) && { echo \\\"MariaDB server failed to start. Aborting\\\"; exit 1; }; mariadb/bin/mariadb --socket=\\\"{{$FullBaseDir}}run/mariadbd/mariadbd.sock\\\" --user=amp -e \\\"FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED VIA unix_socket; ALTER USER 'amp'@'localhost' IDENTIFIED VIA unix_socket; DELETE FROM mysql.user WHERE User=''; DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\\\_%'; FLUSH PRIVILEGES\\\"; mariadb/bin/mariadb-upgrade --port={{$ServerPort}} --socket=\\\"{{$FullBaseDir}}run/mariadbd/mariadbd.sock\\\" --user=amp\"",
        "SkipOnFailure": false
    },
    {
        "UpdateStageName": "Set Up and Upgrade MariaDB",
        "UpdateSourcePlatform": "Windows",
        "UpdateSource": "Executable",
        "UpdateSourceData": "powershell.exe",
        "UpdateSourceArgs": "-NoProfile -Command \"Set-Location -Path 'mariadb'; for ($i=0; $i -lt 60; $i++) { $env:MYSQL_PWD = \\\"{{RootPassword}}\\\"; & mariadb/bin/mariadb-admin.exe --protocol=pipe --socket={{WindowsSocketName}} --user=root ping *> $null 2>&1; if ($LASTEXITCODE -eq 0) { Remove-Item Env:MYSQL_PWD; & mariadb/bin/mariadb-admin.exe --protocol=pipe --socket={{WindowsSocketName}} --user=root ping *> $null 2>&1; if ($LASTEXITCODE -eq 0) { $hosts = & mariadb/bin/mariadb.exe --protocol=pipe --socket={{WindowsSocketName}} --user=root --batch --skip-column-names -e \\\"SELECT Host FROM mysql.user WHERE User = 'root';\\\"; foreach ($h in $hosts) { & mariadb/bin/mariadb.exe --protocol=pipe --socket={{WindowsSocketName}} --user=root -e \\\"ALTER USER 'root'@'${h}' IDENTIFIED BY '{{RootPassword}}';\\\" }; break } }; Start-Sleep -Seconds 1 }; if ($i -eq 60) { Write-Output \\\"MariaDB server failed to start. Aborting\\\"; exit 1 } else { Write-Output \\\"*** NOTE: The log messages above relating to access being denied for the root user can be ignored. ***\\\"; $env:MYSQL_PWD = \\\"{{RootPassword}}\\\"; & mariadb/bin/mariadb.exe --protocol=pipe --socket={{WindowsSocketName}} --user=root -e \\\"FLUSH PRIVILEGES; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\\\_%'; FLUSH PRIVILEGES\\\"; & mariadb/bin/mariadb-upgrade.exe --port={{$ServerPort}} --protocol=tcp --host=127.0.0.1 --user=root --skip-ssl }\"",
        "SkipOnFailure": false
    }
]