Shell 腳本之 MySQL 一鍵安裝及基本配置(幾分鐘搞定)

準備工作

MySQL 該版本下載地址:

https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

image-20210716111126345

mysql_install-v1.0.sh腳本如下:

#!/bin/bash

# MySQL 安裝日誌信息
log=/var/log/mysql_install.log
# MySQL壓縮包路徑
MySQLPath=/root/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
# sql 文件
sqlfile=/root/test.sql

# 卸載系統⾃帶的MARIADB
rpm -qa|grep mariadb |xargs yum remove -y > /dev/null

# 解壓MYSQL安裝包
echo '===================================='
echo 'Unzip....'
tar -zxf $MySQLPath -C /usr/local/
mv /usr/local/mysql-5.7.30-linux-glibc2.12-x86_64 /usr/local/mysql
if [ $? -ne 0 ];then
echo 'MySQL unzip failed!!!'
exit
else
echo '===================================='
echo 'Unpack the success!'
fi

# 創建MYSQL⽤戶和⽤戶組
groupadd mysql
useradd -g mysql mysql
mkdir /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql
echo '===================================='
echo 'User created successfully!'

# MYSQL的配置⽂件
cat > /etc/my.cnf << EOF
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
port = 3306
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
EOF
if [ $? -ne 0 ];then
echo 'Failed to write the my.cnf configuration file!!!'
exit
else
echo '===================================='
echo 'my.cnf configuration success!'
echo '===================================='
fi

# 創建 /var/lib/mysql ⽬錄,並修改權限
mkdir /var/lib/mysql
chmod 777 /var/lib/mysql

# 開始安裝 MYSQL
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 2>&1 | tee $log

# 獲取 root 初始密碼
InitialPassword=`tail -1 $log |awk '{print $NF}'`

# 複製啓動腳本到資源⽬錄,並修改 basedir 和 datadir 爲對應⽬錄
cp ./support-files/mysql.server /etc/init.d/mysqld
sed -i '46s/basedir=/basedir=\/usr\/local\/mysql/g' /etc/init.d/mysqld
sed -i '47s/datadir=/datadir=\/usr\/local\/mysql\/data/g' /etc/init.d/mysqld
if [ $? -ne 0 ];then
echo 'Failed to replace /etc/init.d/mysqld!!!'
exit
else
echo '===================================='
echo '/etc/init.d/mysqld successfully modified!'
echo '===================================='
fi

# 設置MYSQL系統服務並開啓⾃啓
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld

# 啓動MYSQLD
service mysqld restart

# 檢查 MySQL 服務是否啓動成功
netstat -ntlp | grep 3306
if [ $? -ne 0 ];then
echo 'MySQL Boot failure!!!'
exit
else
echo '===================================='
echo 'start MySQL successfully!'
fi

# 將 MYSQL 的 BIN ⽬錄加⼊ PATH 環境變量
echo "export PATH=\$PATH:/usr/local/mysql/bin" >> ~/.bash_profile
source ~/.bash_profile

if [ $? -ne 0 ];then
echo 'Variable write failed!!!'
exit
else
echo '===================================='
echo 'Variable write successful!'
echo '===================================='
fi

# 登陸MYSQL,並執行 SQL 語句
mysql -uroot -p"$InitialPassword" --connect-expired-password < $sqlfile 2> /dev/null

if [ $? -ne 0 ];then
echo 'fail to perform MySQL operation!!!'
exit
else
echo '===================================='
echo 'All operations were successful and can be connected through Navicat!!!'
echo '===================================='
fi

test.sql文件內容如下:

alter user user() identified by "123456";
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;

第一、修改 root 密碼;

第二、設置遠程主機登錄,可以通過Navicat來登錄。

執行腳本

這裏需要注意的是不要使用 ./mysql_install-v1.0.sh方式來執行,否則系統環境變量執行完腳本之後不生效;

需要使用source mysql_install-v1.0.sh來執行腳本纔可以。

image-20210716112006040

使用修改後的密碼登錄測試

image-20210716112105269

Navicat 連接測試

Snipaste_2021-07-16_11-07-26

後續還會繼續更新其他應用一鍵安裝腳本,歡迎關注我哦!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章