【实用脚本】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)所有。如需引用本站内容,请注明来源及作者。
评论