Centos 7 ,8 下安装mysql 5.7

本文详细介绍了在CentOS7和8系统中使用脚本进行MySQL5.7的下载、目录创建、账户设置、配置文件生成、启动服务以及一键安装脚本的编写过程,包括主从复制的配置。
摘要由CSDN通过智能技术生成

Centos 7 ,8 下安装mysql 5.7

提示:6 为一键安装脚本 ,写的不好能用,大佬勿喷

1、下载mysql 5.7

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

2、创建安装目录、创建mysql账户

mkdir -p /mysql/{data,binlog-master,binlog-slave,tmp,backup}
yum  -y -q install libaio numactl-libs ncurses-compat-libs libaio-devel
tar zxf  mysql-5*.tar.gz -C /mysql/ 
mv /mysql/mysql-5* /mysql/mysql
chown -R mysql.mysql /mysql 
echo "PATH=/mysql/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
source  /etc/profile.d/mysql.sh
mysqld --initialize-insecure --user=mysql --basedir=/mysql/mysql --datadir=/mysql/data

3、生成配置文件

cat <<EOF >/etc/my.cnf
[client]
socket=/mysql/tmp/mysql.sock
[mysql]
socket=/mysql/tmp/mysql.sock
prompt=Master [\\d]>
[mysqld]
server_id=01
port=3306
user=mysql
pid_file=/mysql/tmp/mysql.pid
socket=/mysql/tmp/mysql.sock
basedir=/mysql/mysql
datadir=/mysql/data
log_error=/mysql/binlog-master/mysql.log
log_bin=/mysql/binlog-master/mysql-master-bin
gtid_mode=on
enforce_gtid_consistency=true
log_slave_updates=1
secure_file_priv=/mysql/tmp
EOF
4 、生成启动文件
cat <<EOF >/etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
After=network.target
After=syslog.target
[Service]
User=mysql
Group=mysql
ExecStart=/mysql/mysql/bin/mysqld --defaults-file=/etc/my.cnf
#ExecStart=/mysql/mysql5/bin/mysqld_safe --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
[Install]
WantedBy=multi-user.target
EOF

5、启动mysql

systemctl start mysqld
systemctl enable  mysqld

6、一键安装mysql脚本

提前下载 安装包,脚本为函数编写
#!/bin/bash
#自己修改系列参数
#本脚本可以做主从复制
MASTER_IP="192.168.187.153"   
MASTER_PASSWORD="123"
MASTER_REPL_USER=repl
MASTER_REPL_PASSWORD="123"
MASTER_P="3306"


#SLAVE_PASSOWRD="123"
#多实例还没有写,需要修改路径太多。
#MULTI_SERVER_ID=
#MULTI_PORT=3307
COLOUR="echo -e \e[2;31m "
END=" \e[0m"



check_mysql(){
	id mysql &> /dev/null &&{ $COLOUR "账号已存在!" $END ; return 200 ; }
	[ -f ./mysql-5*.tar.gz ] || { $COLOUR "没有安装包!!" $END ; return 201 ; }
      	useradd -s /sbin/nologin -r  mysql
	return 100
}
make_mysql(){
	[ -d /mysql ] && { $COLOUR "mysql目录已经存在!" $END ; return 200 ; }
	mkdir -p /mysql/{data,binlog-master,binlog-slave,tmp,backup} &> /dev/null
	touch /mysql/binlog-master/mysql.log
	 command -v yum  && yum  -y -q install libaio numactl-libs ncurses-compat-libs libaio-devel &> /dev/null
	 command -v apt  && apt -y install libncurses5
	tar zxf  mysql-5*.tar.gz -C /mysql/ &> /dev/null
	mv /mysql/mysql-5* /mysql/mysql
	chown -R mysql.mysql /mysql &> /dev/null
	echo "PATH=/mysql/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
	source /etc/profile.d/mysql.sh
	return 100
}
mk_master_cnf(){
       	[ -f /etc/my.cnf ] && mv /etc/my.cnf /etc/my.cnf`date +%F-%T`.bak &> /dev/null
		server_id=`hostname -I |awk -F . '{print $4}'`
cat <<EOF >/etc/my.cnf
[client]
socket=/mysql/tmp/mysql.sock
[mysql]
socket=/mysql/tmp/mysql.sock
prompt=Master [\\d]>
[mysqld]
server_id=${server_id}
port=3306
user=mysql
pid_file=/mysql/tmp/mysql.pid
socket=/mysql/tmp/mysql.sock
basedir=/mysql/mysql
datadir=/mysql/data
log_error=/mysql/binlog-master/mysql.log
log_bin=/mysql/binlog-master/mysql-master-bin
gtid_mode=on
enforce_gtid_consistency=true
log_slave_updates=1
secure_file_priv=/mysql/tmp
EOF
	return 100
}
mk_slave_cnf(){

[ -f /etc/my.cnf  ] && mv /etc/my.cnf /etc/my`date +%F-%T`.cnf.bak &> /dev/null
server_id=`hostname -I |awk -F . '{print $4}'`
cat <<EOF >/etc/my.cnf
[client]
socket=/mysql/tmp/mysql.sock
[mysql]
prompt=Slave [\\d]>
socket=/mysql/tmp/mysql.sock
[mysqld]
server_id=${server_id}
port=3306
user=mysql
basedir=/mysql/mysql
datadir=/mysql/data
log_error=/mysql/binlog-master/mysql.log
pid_file=/mysql/tmp/mysql.pid
socket=/mysql/tmp/mysql.sock
#开启二进制日志
log_bin=/mysql/binlog-master/mysql-bin
#GTID开启
gtid_mode=on
enforce_gtid_consistency=true
log_slave_updates=1
#开启output
secure_file_priv=/tmp
#主从复制
master_info_file=/mysql/binlog-master/master.info
relay_log=/mysql/binlog-slave/relay-bin
relay_log_info_file=/mysql/binlog-slave/relay-log.info
#从库只读
#read-only=on
EOF
	return 100
}

initialize_mysql(){
       		[ -f /etc/my.cnf ] && mv /etc/my.cnf /etc/my.cnf`date +%F-%T`.bak &> /dev/null
		mysqld --initialize-insecure --user=mysql --basedir=/mysql/mysql --datadir=/mysql/data &> /dev/null
		[ $? -eq 0 ] || { echo -e "\e[2;32m  初始化失败,请确保data目录为空!\e[0m " ; return 200 ; }
		return 100
	}

service_mysql(){
cat <<EOF >/etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
After=network.target
After=syslog.target
[Service]
User=mysql
Group=mysql
ExecStart=/mysql/mysql/bin/mysqld --defaults-file=/etc/my.cnf
#ExecStart=/mysql/mysql5/bin/mysqld_safe --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start mysqld
systemctl enable  mysqld &> /dev/null
return 100
}


install_mysql(){
	echo -en "\e[1;32m  正在安装请稍后... \e[0m"
		master_net=`echo ${MASTER_IP} | awk -F . '{print $1"."$2"."$3".%"}'`
		check_mysql
		[ $? -eq 100 ] || return
		make_mysql
		[ $? -eq 100 ] || return
		initialize_mysql
		[ $? -eq 100 ] || return
		mk_master_cnf
		[ $? -eq 100 ] || return
		service_mysql
		[ $? -eq 100 ] || return
		sleep 5
		systemctl is-active mysqld &> /dev/null
		if [ $? -eq 0 ] ;then
			mysqladmin  password ${MASTER_PASSWORD} &> /dev/null
			mysql -uroot -p${MASTER_PASSWORD} -e "grant replication slave on *.* to ${MASTER_REPL_USER}@'${master_net}' identified by '123'"
			echo "mysql安装成功!"
		else
			echo "mysql启动失败,请查看日志!"
		fi

}
install_slave(){
		mk_slave_cnf
		[ $? -eq 100 ] || return
		systemctl restart mysqld
		sleep 10
		systemctl is-active mysqld

		login_mysql_slave="mysql -uroot -p${MASTER_PASSWORD} "
${login_mysql_slave}   <<EOF
change master to
MASTER_HOST='${MASTER_IP}',
MASTER_USER='${MASTER_REPL_USER}',
MASTER_PASSWORD='${MASTER_PASSWORD}',
MASTER_PORT=${MASTER_P},
MASTER_AUTO_POSITION=1;
start slave;
EOF

		echo -e "\e[1;32m 从库配置完成!\e[0m"
		return 100
	}

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值