#!/bin/sh #---------------------------------------------------------------------------- # /var/install/bin/mysql-common-tools-userdrop [user] [host] # # Creation: 2004-06-10 jv # Last Update: $Id$ # # Copyright (c) 2004 Jens Vehlhaber, jvehlhaber(at)buchenwald(dot)de # Copyright (c) 2012-@@YEAR@@ Holger Bruenjes, holgerbruenjes(at)gmx(dot)net # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------- #include eislib . /var/install/include/eislib # check if use cui version #. /etc/config.d/setup #debug=true if ${debug:-false} then exec 2>/tmp/$(basename ${0})-trace$$.log set -x ask_debug=true export ask_debug fi user_name='' host_name='' MKTEMP=/usr/bin/mktemp CAT=/usr/bin/cat RM=/usr/bin/rm ASK=/var/install/bin/ask # --------------------------------------------------------------------------- # defaults # --------------------------------------------------------------------------- get_defaults() { # default values . /srv/mysql/defaults.info } # --------------------------------------------------------------------------- # check status and access of MariaDB/MySQL Database # --------------------------------------------------------------------------- check_status() { if [ ! -f ${mysql_pid_file} ] then echo mecho --error 'MariaDB/MySQL Server is not running.' echo exit 1 fi ${mysql_basedir}/${db_mysqladmin} --socket=${mysql_socket} \ status >/dev/null 2>&1 if [ ${?} -ne 0 ] then echo mecho -n --error 'MariaDB/MySQL Server' mecho -n --std " 'root' " mecho --error 'password is required.' mecho --info 'Please set the root password.' echo exit 1 fi } # --------------------------------------------------------------------------- # run sql string # --------------------------------------------------------------------------- drop_user() { ${mysql_basedir}/${db_mysql} --socket=${mysql_socket} \ --database=mysql ${skip_ssl} \ -e "REVOKE ALL PRIVILEGES, GRANT OPTION FROM '${p1}'@'${p2}';" ${mysql_basedir}/${db_mysql} --socket=${mysql_socket} \ --database=mysql ${skip_ssl} \ -e "DROP USER '${p1}'@'${p2}';FLUSH PRIVILEGES;" exit 0 } # --------------------------------------------------------------------------- # clear screen or use cui tool # --------------------------------------------------------------------------- run_list() { # if [ "${MENU}" = "/var/install/bin/show-menu.cui" ] # then # ${base_dir}/list-mysql.cui --title="Delete MariaDB/MySQL user:" \ # --server=unix:${socket} \ # --database=mysql \ # --user=root \ # --query="SELECT user, host, select_priv, insert_priv, grant_priv FROM user WHERE user != 'root'" \ # --script="/var/install/bin/mariadb-tools-userdrop" \ # --quest="Delete user/host: %s from system database?" \ # --scriptparam=2 \ # --helpfile=/var/install/help/mariadb \ # --helpname=MARIADB_MENU_USERDROP # exit 0 # fi # --------------------------------------------------------------------------- # get username # --------------------------------------------------------------------------- _user=$(${mysql_basedir}/${db_mysql} --socket=${mysql_socket} \ --database=mysql \ --skip-column-names ${skip_ssl} \ -e "SELECT user, host, select_priv, insert_priv, \ grant_priv FROM user ;" | sed 's/\t/;/g' | grep -v 'root;localhost') clrhome mecho --info 'Delete MariaDB/MySQL user' echo techo --begin '2 5r 1 17 18 12 12 11' techo --row '' No '' user host select_priv insert_priv grant_priv echo idx=1 for line in ${_user} do _u1=$(echo ${line} | cut -d';' -f1) _u2=$(echo ${line} | cut -d';' -f2) _u3=$(echo ${line} | cut -d';' -f3) _u4=$(echo ${line} | cut -d';' -f4) _u5=$(echo ${line} | cut -d';' -f5) techo --row '' "${idx}." '' "${_u1}" "${_u2}" "${_u3}" "${_u4}" "${_u5}" idx=$((${idx} + 1)) done techo --end echo echo _ask_file=$(${MKTEMP} -t .XXXXXXXXXXXXX) ${ASK} 'Select' '' "1-$(echo "${_user}" | wc -l)" '^$=Return' '0=Exit' >${_ask_file} rc=${?} read _user_remove < ${_ask_file} ${RM} -f ${_ask_file} if [ ${rc} = 255 ] then _user_remove=0 fi case ${_user_remove} in '') exit 0 ;; 0) exit 127 ;; *) # get action line action_line="$(echo "${_user}" | sed -n "${_user_remove}p" | sed 's/^ *//')" user_name=$(echo ${action_line} | cut -d';' -f1) host_name=$(echo ${action_line} | cut -d';' -f2) ;; esac /var/install/bin/mysql-common-tools-userdrop -u "${user_name}" -h "${host_name}" ${package_name} anykey } # --------------------------------------------------------------------------- # main # --------------------------------------------------------------------------- main() { while [ ${#} -ne 0 ] do case "${1}" in -u) p1="${2}" shift 2 ;; -h) p2="${2}" shift 2 ;; mariadb*|mysql*) package_name="${1}" project_name=$(echo ${package_name} | tr [:lower:] [:upper:]) my_path=$(echo "${package_name}" | sed 's|[^[:digit:]]||g') # include config . /etc/config.d/${package_name} eval ssl_use='${'${project_name}'_SSL_USE:-no}' if [ ${my_path:-110} = 114 ] && [ "${ssl_use}" != "yes" ] then skip_ssl='--skip-ssl' fi shift ;; *) echo "Unknown argument '${1}'" exit 1 ;; esac done get_defaults check_status if [ -n "${p1}" ] && [ -n "${p2}" ] then drop_user fi run_list exit 0 } # --------------------------------------------------------------------------- # call function main # --------------------------------------------------------------------------- main "${@}" # --------------------------------------------------------------------------- # end # ---------------------------------------------------------------------------