HEX
Server: Apache/2.4.63 (Unix)
System: Linux TOMS-220NAS 4.4.302+ #86009 SMP Wed Nov 26 18:19:17 CST 2025 x86_64
User: flavio87 (1026)
PHP: 8.3.27
Disabled: NONE
Upload Files
File: //var/packages/MariaDB10/scripts/start-stop-status
#!/bin/sh
# Copyright (C) 2000-2017 Synology Inc. All rights reserved.

. "$(dirname $0)"/common
. "$(dirname $0)"/lib

PKGVERSION=`/bin/get_key_value /var/packages/$PACKAGE_NAME/INFO version`
PID_FILE=/run/mysqld/mysqld10.pid

# FIXME remove DO_LINK for DSM8.0
DO_LINK

################################
# Hook
################################
HOOK_MARIADB_CHPW=/usr/local/plugin/mariadb10_chpw
HOOK_MARIADB_START=/usr/local/plugin/mariadb10_start
HOOK_MARIADB_STOP=/usr/local/plugin/mariadb10_stop

UpgradeDatabase()
{
    local _DBVERSION=`cat ${DATADIR}/VERSION`
    local _PKGVERSION=`echo $PKGVERSION | sed 's|\(.*\)-[0-9]*|\1|'`
    local _DATADIR="`readlink ${DATADIR}`"

    if [ x${_DBVERSION} = x${_PKGVERSION} ]; then
        logger -p info "MariaDB: UpgradeDatabase: The same version, skip to upgrade ..."
        return 0
    fi

    echo "run mariadb-update from prev_ver=${_DBVERSION}"
    # enter single user mode to bypass authentication
    $MYSQL_SERVER status && $MYSQL_SERVER stop
    if ! StartSingleUser; then
        logger -p err "MariaDB: UpgradeDatabase: Failed to enter single user mode"
        return 1
    fi

    if ! env LC_ALL=en_US.utf8 "$BIN_MYSQL_UPGRADE" --force -u root; then
        logger -p err "MariaDB: UpgradeDatabase: Failed to upgrade MySQL"
        $MYSQL_SERVER stop
        return 1
    else
        echo ${PKGVERSION} | sed 's|\(.*\)-[0-9]*|\1|' > ${DATADIR}/VERSION
        logger -p err "MariaDB: UpgradeDatabase: Upgrade database successfully"
    fi

    # leave single mode
    $MYSQL_SERVER stop || exit 1

    return 0
}

MigrateRedoLogIfNeed()
{
    MDB103BASE="/var/packages/MariaDB10/target/usr/local/mariadb10.3"
    MDB103LINK="/usr/local/mariadb10.3"
    DATA_VERSION=$(cat /var/packages/MariaDB10/var/mariadb10/VERSION)
    if [ ${DATA_VERSION::4} == "10.3" ]; then
        ln -s  ${MDB103BASE} ${MDB103LINK}
        ${MDB103BASE}/share/mysql/mysql.server  start
        ${MDB103BASE}/share/mysql/mysql.server  stop
        rm -rf ${MDB103LINK}
    fi
    rm -rf ${MDB103BASE}
}

CallChpwHooks()
{
    # Execute hook files
    local user="$1"
    local pwfile="$2"
    local ret=0
    local hook
    for hook in "$HOOK_MARIADB_CHPW/"*; do
        if [ ! -x "$hook" ]; then
            continue
        fi
        if ! "$hook" "$user" "$pwfile"; then
            logger -p 0 "MariaDB: CallChpwHooks: mariadb_chpw hook failed on '$hook' with dbuser '$user'"
            ret=1
        fi
    done
    return $ret
}

CallHooks()
{
    local hook_path="$1"
    local hook
    local ret=0
    for hook in "$hook_path/"*; do
        if [ ! -x "$hook" ]; then
            continue
        fi
        if ! "$hook"; then
            logger -p 0 "MariaDB: CallHooks: $(basename "$hook_path") hook failed"
            ret=1
        fi
    done
    return $ret
}

ResetPassword()
{
    touch /tmp/mysql_init.$$
    chown mysql:mysql /tmp/mysql_init.$$
    chmod 600 /tmp/mysql_init.$$
# NO_AUTO_CREATE_USER is default since MariaDB 10.1.7
    cat > /tmp/mysql_init.$$ <<EOF
DROP USER IF EXISTS 'root'@'%';
DROP USER IF EXISTS 'root'@'localhost';
CREATE USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('$(echo "$RESET_DEFAULT_PASSWORD" | quote_sql)');
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
EOF
    $MYSQL_SERVER start --init-file=/tmp/mysql_init.$$
    rm /tmp/mysql_init.$$
    CallChpwHooks root "${RESET_DEFAULT_PASSWORD}"
    return $?
}

case $1 in
    start)
        MigrateRedoLogIfNeed
        DO_LINK
        $MYSQL_SERVER status && exit 0
        ChkExecEnv
        if [ singleuser = "$2" ]; then
            # start for backup process
            StartSingleUser || exit 1
        else
            # normal start
            UpgradeDatabase || exit 1
            if $MYSQL_SERVER start; then
                CallHooks "$HOOK_MARIADB_START"
            fi
            ln -sf /run/mysqld/mysqld10.sock /run/mysqld/mysqld.sock
            $MYSQL_SERVER status
        fi
        ;;
    stop)
        ChkExecEnv
        if $MYSQL_SERVER status; then
            $MYSQL_SERVER stop
        fi
        CallHooks "$HOOK_MARIADB_STOP"
        rm -f /run/mysqld/mysqld.sock
        ;;
    restart)
        DO_LINK
        ChkExecEnv
        UpgradeDatabase || exit 1
        $MYSQL_SERVER restart
        ;;
    reload)
        $MYSQL_SERVER reload
        ;;
    status)
        DO_LINK
        $MYSQL_SERVER status
        ;;
    chpw)
        CallChpwHooks "$2" "$3"
        exit $?
        ;;
    resetpassword)
        $0 stop
        ResetPassword
        Ret=$?
        $0 stop
        exit $Ret
        ;;
    rebuild)
        mysqlPath=$(readlink "${DATADIR}")
        [ -d "${mysqlPath}" ] && rm -rf "${mysqlPath}"
        RebuildDatabase
        ;;
esac