[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
- 第十章 云服務器
- 騰訊云
- 阿里云
- 其他
- 其他作品
- 簡歷內推
- 聯系我內推