自记录 MySQL 8 安装脚本,已验证安装成功,慎用。
#/bin/bash
echo "" && read -p "请输入安装包路径:" src_path
for i in `seq 2`
do
if [ ! -f $src_path ];then
echo ""
read -p "文件不存在,请重新输入:" src_path
fi
if [ $i -eq 2 ] && [ ! -f $src_path ] ;then
echo -e "\n错误:请确认安装包路径后重新执行安装脚本。\n"
exit 1
fi
done
echo "" && read -p "请输入mysql安装路径:" base_path
if [ ! -d $base_path ];then
echo -e "\n错误:$base_path 不是一个目录,请确认后重新执行安装脚本。\n"
exit 1
fi
if [ -d $base_path ] && [ "`ls -A $base_path`" != "" ];then
echo -e "\n错误:$base_path 不是一个空的目录,请确认后重新执行安装脚本。\n"
exit 1
fi
echo -e "\n开始安装,请稍等..."
tar xf $src_path
pack_name=$(echo $src_path | awk -F '/' '{print $NF}')
mv ${pack_name%%.tar*}/* ${base_path}/
useradd mysql &> /dev/null
chown -R mysql.mysql $base_path
#生成my.cnf
cat > /etc/my.cnf << EOF
[mysqld]
user=mysql
basedir=$base_path
datadir=${base_path}/data
port=3306
character_set_server=utf8mb4
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
init_connect='SET collation_connection=utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
[mysql]
default-character-set=utf8mb4
[client]
port=3306
default-character-set=utf8mb4
EOF
#初始化安装
cd ${base_path}/bin && ./mysqld --initialize
if [ $? -ne 0 ];then
echo -e "\n错误:安装异常,请检查系统环境。\n"
exit 1
fi
cd ../ && cp -a ./support-files/mysql.server /etc/init.d/mysql && chmod +x /etc/init.d/mysql && chkconfig --add mysql
echo -e "\n正在启动 mysql..."
sleep 3
service mysql start
if [ $? -ne 0 ];then
echo -e "\nmysql 启动失败,请检查日志。后续请手动启动服务并修改初始化密码。"
exit 1
fi
cp /etc/profile{,-bak} && echo -e "\n\n#MYSQL\nMYSQL_HOME=$base_path\nPATH=\$PATH:\$MYSQL_HOME/bin" >> /etc/profile
source /etc/profile
echo "" && read -p "请输入初始化密码:" init_pwd
echo "" && read -p "请输入新密码:" new_pwd
sql(){
mysql -uroot -p$init_pwd --connect-expired-password << EOF
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$new_pwd';
flush privileges;
EOF
}
sql &> /dev/null
if [ $? -eq 0 ];then
echo -e "\n密码修改成功。\nroot@localhost 连接新密码为:$new_pwd"
else
echo -e "\n密码修改失败,请后续手动修改"
fi
echo -e "\nmysql安装启动完成,请输入 'mysql -uroot -p' ,键入密码连接数据库。"
请多指正,感谢。