脚本运行的环境:
①防火墙及SElinux关闭
②centos7.9
③外网通
废话少说,直接附脚本
#!/bin/bash
#function:mysql安装
#author:tommypeng 20220618
#####root判断#####
if
[ "$USER" != "root" ]
then
echo "错误:非root用户,权限不足!"
exit 0
fi
#####安装文件判断######
MOUNT_File="/root/mysql-5.5.62.tar.gz"
if
[ ! -e $MOUNT_File ]
then
echo "安装文件不存在,请上传安装文件到/root/,上传完成再重新运行该脚本"
exit 1
fi
###############防火墙及SElinux############
systemctl stop firewalld && systemctl disable firewalld && echo "防火墙已经关闭"
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config && echo "关闭selinux"
sleep 10
###########清理旧版本###########
rpm -qa | grep mariadb > /root/888.txt
rpm -qa | grep mysql >> /root/888.txt
PLIST=$(cat /root/888.txt)
for PKGNAME in $PLIST
do
rpm -e --nodeps $PKGNAME && echo "老旧包已经清理完毕"
done
rm -rf /root/888.txt && echo "临时文件已删除"
sleep 8
###########安装依赖包##############
yum -y install make gcc-c++ cmake bison-devel ncurses-devel perl openssl-devel autoconf 2> /root/yum.log
if
[ $? = 0 ]
then
echo "依赖包安装成功"
else
echo "依赖包安装失败,请查看日志文件/root/yum.log"
exit 1
fi
############添加用户及组###########
groupadd mysql
useradd mysql -g mysql -M -s /sbin/nologin
#########解压安装包##########
cd /root/
tar -zxvf mysql-5.5.62.tar.gz
cd mysql-5.5.62
############开始编译##########
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci 2> /root/cmake.log
if
[ $? = 0 ]
then
echo "编译成功"
else
echo "编译失败,请查看日志文件/root/cmake.log"
rm -rf /usr/local/mysql/CMakeCache.txt
exit 1
fi
##########开始安装#############
make && make install 2> /root/install.log
if
[ $? = 0 ]
then
echo "安装成功"
else
echo "安装失败,请查看日志文件/root/install.log"
exit 1
fi
#########账户权限配置###########
chown mysql:mysql /usr/local/mysql
###########安全初始化##########
yum -y install autoconf && echo "Dumper模块安装成功"
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data &>csh.log
if
[ $? = 0 ]
then
echo "初始化成功,请查看日志文件/root/install.log"
else
echo "初始化失败,请查看日志文件/root/install.log"
exit 1
fi
############重建my-default.cnf#############
cat >> /usr/local/mysql/support-files/my-default.cnf << EOF
# Example MySQL config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MySQL plays
# an important part, or systems up to 128M where MySQL is used together with
# other programs (such as a web server)
#
# MySQL programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to one of those
# locations. For information about these locations, see:
# http://dev.mysql.com/doc/mysql/en/option-files.html
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.
# The following options will be passed to all MySQL clients
[client]
default-character-set=utf8
#password = your_password
port = 3306
socket = /tmp/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
character-set-server=utf8
init_connect='SET NAMES utf8
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
character-set-server=utf8
init_connect='SET NAMES utf8'
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
# binary logging format - mixed recommended
binlog_format=mixed
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1
# Replication Slave (comment out master section to use this)
#
# To configure this host as a replication slave, you can choose between
# two methods :
#
# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
# the syntax is:
#
# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,
# MASTER_USER=, MASTER_PASSWORD= ;
#
# where you replace , , by quoted strings and
# by the master's port number (3306 by default).
#
# Example:
#
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
# MASTER_USER='joe', MASTER_PASSWORD='secret';
#
# OR
#
# 2) Set the variables below. However, in case you choose this method, then
# start replication for the first time (even unsuccessfully, for example
# if you mistyped the password in master-password and the slave fails to
# connect), the slave will create a master.info file, and any later
# change in this file to the variables' values below will be ignored and
# overridden by the content of the master.info file, unless you shutdown
# the slave server, delete master.info and restart the slaver server.
# For that reason, you may want to leave the lines below untouched
# (commented) and instead use CHANGE MASTER TO (see above)
#
# required unique id between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
#server-id = 2
#
# The replication master for this slave - required
#master-host =
#
# The username the slave will use for authentication when connecting
# to the master - required
#master-user =
#
# The password the slave will authenticate with when connecting to
# the master - required
#master-password =
#
# The port the master is listening on.
# optional - defaults to 3306
#master-port =
#
# binary logging - not required for slaves, but recommended
#log-bin=mysql-bin
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /usr/local/mysql/data
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /usr/local/mysql/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set=utf8
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
EOF
############配置文件#############
cp /usr/local/mysql/mysqlsupport-files/my-default.cnf /etc/my.cnf
cat >> /root/mysql.txt << EOF
datadir=/usr/local/mysql/data
default-storage-engine=InnoDB
lower_case_table_names=1
EOF
sed -i '/\[mysqld\]/r /root/mysql.txt' /etc/my.cnf
sed -i "s/PATH=$PATH:$HOME/bin/PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib/g" /root/.bash_profile
source /root/.bash_profile
#############删除临时文件##############
rm -rf mysql.txt && echo "临时文件已经删除"
##########启动数据库################
/usr/local/mysql/support-files/mysql.server start && echo "数据库已启动"
ln -s /usr/local/mysql/bin/mysql* /usr/bin && echo "完成,请使用mysql -u root 登录(无密码)"
脚本运行时有提示,请首先上传安装包到/root/下,
安装包下载链接为:
http://链接:https://pan.baidu.com/s/13yCxKVha-jYoCXQMhnLhzg?pwd=0u9l 提取码:0u9l --来自百度网盘超级会员V6的分享
版权归原作者 IT大白鼠 所有, 如有侵权,请联系我们删除。