#!/bin/bash

#配置数据库要安装的目录,可以根据自己的安装路径修改PATHDIR
PATHDIR="/project"
BASEDIR="$PATHDIR/mysql"
DATADIR="$BASEDIR/data"
#判断3306端口是否被占用
netstat -an | grep 3306 2>&1 > /dev/null
if [ $? -eq 0 ];then
echo -e "\033[5;31m 3306端口已经被使用... \033[0m"
exit 1
else
echo -e "\033[32m 准备安装...\033[0m"
fi
#创建mysql用户组和用户
groups mysql > /dev/null 2>&1
if [ $? -eq 0 ];then
echo "mysql用户组已经存在"
else
groupadd mysql
fi

id mysql >/dev/null 2>&1

if [ $? -eq 0 ];then
echo "mysql用户存在"
else
useradd -r -g mysql -s /bin/false mysql
fi

#备份mysql的配置文件
mv /etc/my.cnf /etc/my.cnf.backup >/dev/null 2>&1
cat >>/etc/my.cnf <<eof
[mysqld]
basedir=$BASEDIR
datadir=$DATADIR
eof

#解压mysql安装包
tar -xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C $PATHDIR >/dev/null 2>&1

if [ $? -eq 0 ];then
echo -e "\033[32m 解压完成\033[0m"
else
echo -e "\033[31m 解压失败...\033[0m"
exit 1
fi
#移动解压包到安装目录下
mv $PATHDIR/mysql-5.7.26-linux-glibc2.12-x86_64 $BASEDIR >/dev/null 2>&1
#配置mysql环境变量
echo -e 'MYSQL=/project/mysql/bin\nexport PATH=$PATH:$MYSQL' >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
if [ $? -eq 0 ];then
echo -e "\033[32m 环境变量配置成功,请稍等...\033[0m"
else
echo -e "\033[31m 环境变量配置失败...\033[0m"
exit 1
fi

#创建mysql的data目录
mkdir -pv $BASEDIR/data/
chown -R mysql:mysql $DATADIR
#初始化数据库,并将初始化结果存入tmp.txt文件中(初始化的密码在文件中,后面修改密码会用到)
mysqld --initialize --user=mysql --basedir=$BASEDIR --datadir=$DATADIR > $PATHDIR/tmp.txt 2>&1

#启动mysql服务,将mysql设置为systemd守护进程
cp $BASEDIR/support-files/mysql.server /etc/init.d/mysql

cat >/lib/systemd/system/mysql.service <<eof
[Unit]
Description=mysql
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/mysql start
ExecReload=/etc/init.d/mysql restart
ExecStop=/etc/init.d/mysql stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
eof

echo -e "\033[32m 正在启动mysql服务,请稍等..\033[0m"
systemctl daemon-reload
systemctl start mysql.service
if [ $? -eq 0 ];then
echo -e "\033[32m mysql服务启动成功\033[0m"
else
echo -e "\033[5;31m mysql服务启动失败...\033[0m"
exit 1
fi
#请输入mysql修改的密码
read -p "初始化数据库mysql的密码,请输入您的数据库新密码:" PASSW
#修改mysql密码
cat tmp.txt|sed -n "$ p"|awk '{print $NF}'|xargs -i mysqladmin -uroot -h 127.0.0.1 -p"{}" password "$PASSW"
if [ $? -eq 0 ];then
echo -e "\033[5;32m 新密码设置成功,请妥善保管\033[0m"
else
echo -e "\033[5;31m 新密码设置失败\033[0m"
exit 1
fi

最新文章

  1. godep 包管理工具
  2. 《轻量级Java Web整合开发入门SSH》 - 快速理解Java框架的又一积木
  3. iOS-OC内存管理
  4. myeclipse9或myeclipse10安装svn的方法
  5. iOS 语言切换、本地化,国际化
  6. Android DrawerLayout 高仿QQ5.2双向侧滑菜单
  7. java配置数据库连接池的方法步骤
  8. 21.allegro下鼠标形状设置[原创]
  9. iOS企业应用Profile制作流程
  10. jQuery点击div其他地方隐藏div
  11. linux命令之vim使用-(转)vim的保存文件和退出命令
  12. js - get-the-value-from-the-url-parameter(可以在非模态对话框中使用)
  13. 关于java reflect
  14. 【JAVA】类继承对父类静态变量的操作
  15. Spark算子--filter
  16. 关于if和else嵌套—蛋疼
  17. Windows代码,添加一个节,以及RVA跟FOA互相转化,以及内存文件对齐代码.
  18. Selenium自动化Chrome浏览器 在windows下窗口最大化
  19. JMeter&#160;配置元件之HTTP&#160;Cookie&#160;Manager&#160;介绍
  20. crawlspider 多分页处理

热门文章

  1. 在变压器厂中使用 ISA-95 应用程序进行调度集成
  2. Guava Cache源码浅析
  3. Vulnhub系列:Tomato(文件包含getshell)
  4. MCU软件最佳实践——使用printf打印数据
  5. Solon 开发,七、自定义注解开发汇总
  6. C#winform控件序列化,反序列化
  7. Python 安装MySQL 错误处理
  8. 什么是HTTP? HTTP 和 HTTPS 的区别?
  9. 【ASP.NET Core】使用最熟悉的Session验证方案
  10. Nginx搭建游戏