提前将二进制包和安装脚本以及配置文件my.cnf上传到服务器上,软件包下载地址:https://dev.mysql.com/downloads/mysql/
本例子中的mysql版本为5.7.19,其余版本同样适用,只需要修改解压文件名以及软链接名即可
脚本内容如下:
#!/bin/bash
# @Author: GongGuan
# @Date: 2021-10-26
set -e
echo "**********************Install MySQL*********************"
workdir=/usr/local/
echo "************tar xf file*************"
FileName=mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
#解压文件并创建软链接
if [ -f $FileName ];then
tar zxvf $FileName -C ${workdir}
if [ $? -eq 0 ];then
echo "********File decompression Success********"
echo "********Copy my.cnf to etc/********"
\cp my.cnf etc/ #注意: 需要提前将my.cnf文件放在脚本同级目录位置
echo "********Create Soft Link********"
cd ${workdir}
ln -s mysql-5.7.19-linux-glibc2.12-x86_64/ mysql
echo "********Soft Link Create Success********"
else
echo "File Decompression Faild,Please Check!!!"
exit 1
fi
else
echo "No Found File,Please Check!!!"
fi
#创建普通用户和组
echo "********create mysql user and group********"
[ -z "$(grep 'mysql' etc/group | awk -F ':' '{print $1}')" ] && groupadd -g 1000 mysql
[ -z "$(grep 'mysql' /etc/passwd | awk -F ':' '{print $1}')" ] && useradd -g mysql -u 1000 -s /sbin/nologin mysql
#给mysql目录和配置文件设置属主和属组
echo "********Set permissions********"
chown -R mysql:mysql mysql/*
chown mysql:mysql /etc/my.cnf
#将mysql可执行文件添加到环境变量中
echo "********Add mysql Binary file to env********"
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
#c创建数据目录和binlog目录,执行初始化
echo "********create data directory or binlog directory********"
[ ! -d "/data/mysql/data" -o ! -d "/data/mysql/binlog" ] && mkdir -p /data/mysql/{data,binlog}
chown -R mysql:mysql /data/mysql
echo "********mysql initialization********"
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
passwd_root=$(grep 'temporary password' /data/mysql/error.log | awk '{print $11}') #获取初始密码
[ -n "${passwd_root}" ] && echo "<<<<<<<<<<mysql初始化成功>>>>>>>>>>>>"
echo "root密码为:${passwd_root}" > /data/mysql/mysql_root_passwd.txt
#copy可执行文件到/etc/init.d/目录下,并重命名为mysqld
\cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
echo "********将mysql设置为开机自启动********"
echo "/etc/init.d/mysqld start" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
#添加软连接
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
#启动Mysql并执行登陆测试
echo "********start mysqld**********"
/etc/init.d/mysqld start
/etc/init.d/mysqld status
echo "<<<<<<<mysql root初始密码存储位置: /data/mysql/mysql_root_password.txt>>>>>>"
#登陆mysql并设置密码
复制
my.cnf文件内容如下:
[client]
port=3306
socket=/data/mysql/data/mysql.sock
[mysqldump]
quick
max_allowed_packet = 16M
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/data
port = 3306
server-id = 1
socket = /data/mysql/data/mysql.sock
skip_name_resolve = 1 #禁止解析主机名,只能用IP检查客户端登录
character-set-server = utf8mb4 #设置默认字符集
collation-server = utf8mb4_general_ci #字符集排序规则
init_connect='SET NAMES utf8mb4' #设置client连接mysql时的字符集,防止乱码
lower_case_table_names = 1 #是否对sql语句大小写不敏感,1表示不敏感
key_buffer_size = 16M
max_allowed_packet = 8M
default-storage-engine=INNODB #默认存储引擎
pid-file = /data/mysql/mysqld.pid #pid文件
log-bin =/data/mysql/binlog/mysql-bin
expire-logs-days=15 #清理binlog日志
max_binlog_size = 1073741824
max_connections = 6000 #最大进程连接数
max_connect_errors = 6000 #最大错误连接数
table_open_cache = 2048 #表描述符缓存大小,可以减少文件打开关闭次数
max_allowed_packet = 64M #消息传输量的最大值
log-error=/data/mysql/error.log
binlog_format = mixed #binlog日志类型
slow_query_log = ON #开启慢查询
slow_query_log_file=/data/mysql/data/slow_query.log
long_query_time=1 #慢查询时间,设置为1s
wait_timeout=84600
explicit_defaults_for_timestamp=true
interactive_timeout=84600
sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
[mysqld_safe]
open-file-limit = 28192
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
复制
注:my.cnf非固定内容,可根据需要添加其余参数
文章转载自运维DevOps,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。