[toc]
## 一、步骤总述
这个基于脚本的自动化mysql安装,是基于源码版本编译并完成安装的脚本,整个安装过程不是非常快,主要占用时间的过程是源码编译。
> 1-下载mysql 5.7的安装包,注意请下载对应的**源码包**;
> 2-上传脚本放置到和安装包同目录下;
> 3-运行脚本自动安装脚本;
> 4-设置自启动。
## 二、安装步骤
### 1-下载安装包
```shell
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.31.tar.gz
```
### 2-编写脚本
在mysql安装包路径下添加以下脚本:
```
#!/bin/bash
source_dir="/home" #这里填写安装包的路径
mysql_dir="/usr/local/mysql"
mysql_package="mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz" #这里需要修改为安装包的名称
mysql_SRC_first=$(echo $mysql_package | sed 's/.tar.gz//g')
mysql_SRC=$(echo $mysql_SRC_first | sed 's/boost-//g')
function init()
{
# close selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
# check yes/no x86_64
if [ `uname -m` != "x86_64" ];then
echo "your system is 32bit ,not install libunwind lib!"
fi
# download depend on the packages
LANG=C
yum -y install gperftools make cmake gcc gcc-c++ autoconf automake libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers pcre pcre-devel
mkdir $log_dir
groupadd mysql && useradd mysql -s /sbin/nologin -g mysql
echo "www and mysql user && group create!"
}
function mysql_install()
{
echo "######## start install mysql ########"
##test yes/no have mysqld/mariadb progress
ps -ef|grep -w mysqld|grep -v "grep" &> /dev/null
if [ $? -eq 0 ];then
mysqlbasedir=`ps -ef|grep -w "mysqld"|grep -v "grep"|awk '{print $9}'|tr -d '\-\-'`
mysqldatadir=`ps -ef|grep -w "mysqld"|grep -v "grep"|awk '{print $10}'|tr -d '\-\-'`
fi
rpm -qa | grep mariadb* &> /dev/null
if [ $? -eq 0 ];then
yum remove mariadb* -y
fi
ls /etc/my.cnf &> /dev/null
if [ $? -eq 0 ];then
mv /etc/my.cnf /etc/my.cnf.bak
fi
ls /etc/init.d/mysql &> /dev/null
tar zxvf $mysql_package
cd $mysql_SRC
echo "start cmake..."
cmake -DCMAKE_INSTALL_PREFIX=$mysql_dir -DMYSQL_UNIX_ADDR=$mysql_dir/mysql.sock -DSYSCONFDIR=$mysql_dir/etc -DSYSTEMD_PID_DIR=$mysql_dir -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DMYSQL_DATADIR=$mysql_dir/data -DWITH_BOOST=boost -DWITH_SYSTEMD=1 > $log_dir/configure_mysql.log
sleep 1
echo "start make && make install..."
make && make install
sleep 2
chown -R mysql.mysql $mysql_dir/
cd $mysql_dir/
echo '######create my.cnf######'
if [ ! -s my.cnf ];then
cat >> my.cnf << EOF
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
default-character-set=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
EOF
else
continue
fi
chown mysql.mysql my.cnf
cp $mysql_dir/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile
rm -rf $mysql_dir/data/*
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld
ps -ef|grep mysql
systemctl status mysqld
echo '######mysql is install completed done.######'
}
init
sleep 1
mysql_install
```
### 3-执行脚本
运行脚本等待执行完毕,经测试这个过程是非常缓慢的,大概需要2个小时:
```
sh mysql.sh
```
### 4-设置自启动
```
systemctl status mysqld
```
### 5-mysql初始化设置
进入数据库中(默认密码为空)
```shell
mysql -uroot -p
mysql> use mysql;
mysql> alter user `root`@`%` identified by "123456" ;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> flush privileges;
mysql> exit
```
> 参考材料:https://blog.csdn.net/hotkoko/article/details/106064642
- ✍写在前面
- 部署管理思想
- 更新说明
- ⛳第一章 基础环境部署
- 1-1 linux防火墙管理
- 1-2 服务器初始化
- 1-3 存储管理
- 文件删除空间释放问题
- 定时清理日志
- 1-4 JDK安装
- 1-5 无外网环境部署
- 1-6 切换阿里云yum源
- 1-7 使用ssh隧道解决网络问题
- 1-8 使用Axure+svn+httpd搭建自己的在线画图工具
- linux svn环境搭建
- 1-9 编译环境安装
- 🚀第二章 快速部署篇
- 2-1 一个命令快速安装mysql
- mysql windows版本安装
- mysql源码版的一键部署
- mysql配置
- 自动化失败
- mysql异常处理
- Oracle表结构转mysql表结构
- 修改字段注释没那么简单!
- 2-2 基于linux脚本的基础环境发布
- 2-3 docker
- 2-4 nodejs部署
- 2-5 基于Alibaba Cloud Toolkit的Springboot发布脚本
- 2-6 elasticsearch部署
- es6.x部署
- es7.x部署
- ik分词器部署
- 内存调优
- 回收空间
- 2-7 Oracle生产安装
- 💥第三章 系统APM
- 3-1 Zabbix安装
- 修改默认端口
- 踩坑记录
- 3-2 Grafana部署
- 3-3 Kibana部署
- 🔨第四章 中间件部署
- 4-1 nginx
- nginx安装部署
- nginx动静分离配置,这个雷你踩过吗?
- 图解nginx304缓存策略
- nginx日志切割
- 4-2 activemq升级
- 4-3 redis安装
- 4-4 Canal部署
- 报错解决
- Canal+Rabbitmq实现同步
- canal数据同步到es
- 4-5 SpringCloud Alibaba
- nacos
- 新建项目
- seata
- 4-6 rabbitmq安装
- 第五章 高可用架构
- 5-1 mysql主从复制
- 主从复制配置
- 5-2 mysql数据自动备份
- 🌊第六章 数据ETL
- 6-1 dataX
- 第七章 持续集成
- 7-1 基于Docker+Jekins+Git实现企业持续集成、部署
- 7-2 安装jekins
- 安装maven
- 7-3 jvm-sandbox自动化测试
- jvm-sandbox-repeater Windows开发环境安装
- 第八章 JVM调优
- jps:查询正在运行的虚拟机进程
- jstat:查看JVM统计信息
- jinfo:实时查看和修改JVM配置参数
- 第七章 域名申请与管理
- SSL证书申请
- 第九章 业务插件部署
- 6-1 ffmpeg
- 第十章 云服务器
- 腾讯云
- 阿里云
- 其他
- 其他作品
- 简历内推
- 联系我内推