代码拉取完成,页面将自动刷新
同步操作将从 Justo/oneinstack 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/bin/bash
# Author: yeho <lj2007331 AT gmail.com>
# BLOG: https://linuxeye.com
#
# Notes: OneinStack for CentOS/RedHat 7+ Debian 9+ and Ubuntu 16+
#
# Project home page:
# https://oneinstack.com
# https://github.com/oneinstack/oneinstack
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
clear
printf "
#######################################################################
# OneinStack for CentOS/RedHat 7+ Debian 9+ and Ubuntu 16+ #
# Reset Database root password for OneinStack #
# For more information please visit https://oneinstack.com #
#######################################################################
"
oneinstack_dir=$(dirname "`readlink -f $0`")
pushd ${oneinstack_dir} > /dev/null
. ./options.conf
. ./include/color.sh
. ./include/check_dir.sh
[ ! -d "${db_install_dir}" ] && { echo "${CFAILURE}Database is not installed on your system! ${CEND}"; exit 1; }
Show_Help() {
echo "Usage: $0 command ...[parameters]....
-h, --help print this help.
-q, --quiet quiet operation.
-f, --force Lost Database Password? Forced reset password.
-p, --password [pass] DB super password.
"
}
New_dbrootpwd="`< /dev/urandom tr -dc A-Za-z0-9 | head -c8`"
TEMP=`getopt -o hqfp: --long help,quiet,force,password: -- "$@" 2>/dev/null`
[ $? != 0 ] && echo "${CWARNING}ERROR: unknown argument! ${CEND}" && Show_Help && exit 1
eval set -- "${TEMP}"
while :; do
[ -z "$1" ] && break;
case "$1" in
-h|--help)
Show_Help; exit 0
;;
-q|--quiet)
quiet_flag=y; shift 1
;;
-f|--force)
force_flag=y; shift 1
;;
-p|--password)
New_dbrootpwd=$2; shift 2
password_flag=y
;;
--)
shift
;;
*)
echo "${CWARNING}ERROR: unknown argument! ${CEND}" && Show_Help && exit 1
;;
esac
done
Input_dbrootpwd() {
while :; do echo
read -e -p "Please input the root password of database: " New_dbrootpwd
[ -n "`echo ${New_dbrootpwd} | grep '[+|&]'`" ] && { echo "${CWARNING}input error,not contain a plus sign (+) and &${CEND}"; continue; }
(( ${#New_dbrootpwd} >= 5 )) && break || echo "${CWARNING}database root password least 5 characters! ${CEND}"
done
}
Reset_Interaction_dbrootpwd() {
${db_install_dir}/bin/mysqladmin -uroot -p"${dbrootpwd}" password "${New_dbrootpwd}" -h localhost > /dev/null 2>&1
status_Localhost=`echo $?`
${db_install_dir}/bin/mysqladmin -uroot -p"${dbrootpwd}" password "${New_dbrootpwd}" -h 127.0.0.1 > /dev/null 2>&1
status_127=`echo $?`
if [ ${status_Localhost} == '0' -a ${status_127} == '0' ]; then
sed -i "s+^dbrootpwd.*+dbrootpwd='${New_dbrootpwd}'+" ./options.conf
echo
echo "Password reset succesfully! "
echo "The new password: ${CMSG}${New_dbrootpwd}${CEND}"
echo
else
echo "${CFAILURE}Reset Database root password failed! ${CEND}"
fi
}
Reset_force_dbrootpwd() {
DB_Ver="`${db_install_dir}/bin/mysql_config --version`"
echo "${CMSG}Stopping MySQL...${CEND}"
service mysqld stop > /dev/null 2>&1
while [ -n "`ps -ef | grep mysqld | grep -v grep | awk '{print $2}'`" ]; do
sleep 1
done
echo "${CMSG}skip grant tables...${CEND}"
${db_install_dir}/bin/mysqld_safe --skip-grant-tables > /dev/null 2>&1 &
sleep 5
while [ -z "`ps -ef | grep 'mysqld ' | grep -v grep | awk '{print $2}'`" ]; do
sleep 1
done
if echo "${DB_Ver}" | grep -Eqi '^8.0.|^5.7.|^10.2.'; then
${db_install_dir}/bin/mysql -uroot -hlocalhost << EOF
flush privileges;
alter user 'root'@'localhost' identified by "${New_dbrootpwd}";
alter user 'root'@'127.0.0.1' identified by "${New_dbrootpwd}";
EOF
else
${db_install_dir}/bin/mysql -uroot -hlocalhost << EOF
update mysql.user set password = Password("${New_dbrootpwd}") where User = 'root';
EOF
fi
if [ $? -eq 0 ]; then
killall mysqld
while [ -n "`ps -ef | grep mysqld | grep -v grep | awk '{print $2}'`" ]; do
sleep 1
done
[ -n "`ps -ef | grep mysqld | grep -v grep | awk '{print $2}'`" ] && ps -ef | grep mysqld | grep -v grep | awk '{print $2}' | xargs kill -9 > /dev/null 2>&1
service mysqld start > /dev/null 2>&1
sed -i "s+^dbrootpwd.*+dbrootpwd='${New_dbrootpwd}'+" ./options.conf
[ -e ~/ReadMe ] && sed -i "s+^MySQL root password:.*+MySQL root password: ${New_dbrootpwd}+" ~/ReadMe
echo
echo "Password reset succesfully! "
echo "The new password: ${CMSG}${New_dbrootpwd}${CEND}"
echo
fi
}
[ "${password_flag}" == 'y' ] && quiet_flag=y
if [ "${quiet_flag}" == 'y' ]; then
if [ "${force_flag}" == 'y' ]; then
Reset_force_dbrootpwd
else
sleep 2 && [ ! -e /tmp/mysql.sock ] && service mysqld start
Reset_Interaction_dbrootpwd
fi
else
Input_dbrootpwd
if [ "${force_flag}" == 'y' ]; then
Reset_force_dbrootpwd
else
Reset_Interaction_dbrootpwd
fi
fi
popd > /dev/null
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。