【实用脚本】MySQL5.7单实例安装脚本
一、MySQL单实例安装脚本说明
my.cnf配置文件可以根据实际需要进行修改,如果初始化完成后使用临时密码提示密码过期,是因为系统自带的mysql命令行工具与当前安装的MySQL版本不一致,使用绝对路径即可
#!/bin/bash
#脚本说明部分
cat << EOF
1、请事先下载好MySQL二进制安装包并解压于/usr/local下
2、为二进制包做好软连接,如:
ln -s /usr/local/mysql-5.7.27-linux-glibc2.12-x86_64/ /usr/local/mysql
3、确保上面两步都操作后,运行脚本完成服务安装和初始化,MySQL监听端口为3306,配置文件为/etc/my.cnf
EOF
#变量设置
mysql_dir=/data/mysql
data_dir=/data/mysql/data
log_dir=/data/mysql/log
echo ""
#初始化数据库(可反复执行,但会清空数据)
read -p "是否进行初始化,初始化将清空已有数据,输入y继续,其它按键退出脚本:" input
if [ $input == "y" ];then
#创建mysql用户
id mysql > /dev/null 2>&1
if [ $? != 0 ];then
useradd -r -s /sbin/nologin -M mysql && echo "成功创建MySQL用户"
sleep 1
else
echo "MySQL用户已存在,无需创建"
sleep 1
fi
#创建数据和日志目录
mkdir -p $log_dir
mkdir -p $data_dir
chown -R mysql.mysql $mysql_dir
#创建数据库配置文件
if [ -e /etc/my.cnf ];then
echo > /etc/my.cnf
else
touch /etc/my.cnf
fi
#my.cnf配置文件内容
cat > /etc/my.cnf <<EOF
[mysqld]
basedir = /usr/local/mysql
datadir = $data_dir
port = 3306
socket = /tmp/mysql.sock
character-set-server = utf8mb4
default-storage-engine = INNODB
skip-name-resolve
server_id = 10
# sql_safe_updates=1
#Log setting
log_error = $log_dir/error.log
slow_query_log = on
slow_query_log_file = $log_dir/slow.log
long_query_time = 3
log_bin = $log_dir/master-bin
log_bin_index = $log_dir/master-bin.index
binlog_format = row
expire_logs_days = 10
max_binlog_size = 1024M
binlog_cache_size = 32768
#双1参数,建议都设置为1提升数据安全
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
# Innodb setting
innodb_buffer_pool_size = 512M
innodb_flush_method=O_DIRECT
innodb_log_file_size = 200M
innodb_file_per_table = 1
innodb_lock_wait_timeout = 10
# innodb_buffer_pool_dump_at_shutdown = ON
# innodb_buffer_pool_filename = ib_buffer_pool
# innodb_buffer_pool_load_at_startup = ON
[mysql] #作用于mysql客户端工具如果这里配置了先关选项,使用客户端命令就不需要填写了
socket = /tmp/mysql.sock
prompt= "[\\u@linuxe][\\d]>"
# tee = "/data/dblog/tee.log"
no-auto-rehash
EOF
#检查是否有3306端口占用
mysql_proc=`netstat -ntulp | grep 3306 | wc -l`
if [ $mysql_proc -gt 0 ];then
echo "当前MySQL正在运行,请输入MySQL管理密码停止进程"
/usr/local/mysql/bin/mysqladmin -uroot -p -S /tmp/mysql.sock shutdown && echo "MySQL服务已关闭,开始初始化"
if [ $? -ne 0 ];then
echo "密码错误,脚本退出"
exit 1
fi
else
echo "没有MySQL进程正在运行,开始进行初始化"
sleep 1
fi
rm -rf $data_dir/* && echo "已清空数据目录"
rm -rf $log_dir/* && echo "已清空日志目录"
#初始化数据库
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
if [ $? -ne 0 ];then
echo "初始化失败,脚本退出"
exit 1
else
mysql_password=`grep "temporary password" $log_dir/error.log | awk '{print $NF}'`
echo "初始化成功,当前MySQL临时管理密码:$mysql_password"
fi
#启动服务
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf 2>&1 > /dev/null &
echo "请运行/usr/local/mysql/bin/mysql_secure_installation 进行安全初始化"
else
echo "脚本已退出"
fi
版权声明:本文章版权归数据库运维网(www.ywdba.cn)所有。如需引用本站内容,请注明来源及作者。







评论