1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
| #!/bin/bash
software_dir="/usr/local/software" mysql_package="mysql-8.0.26-linux-glibc2.12-x86_64" mysql_package_xz=${mysql_package}.tar.xz mysql_package_url="https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz" mysql_dir="/usr/local/mysql" mysql_data_dir=${mysql_dir}/data mysql_log_dir=${mysql_dir}/log mysql_user="mysql" mysql_user_group="mysql" mysql_username="root" mysql_password="" mysql_init_password="admin123456" mysql_profile="/etc/profile.d/mysql.sh"
function create_dir() { if [ ! -d $1 ]; then mkdir -p $1 echo "=====>创建文件夹:$1" fi }
create_dir $software_dir cd $software_dir
if [ ! -f ${software_dir}'/'${mysql_package_xz} ]; then if ! command -v wget; then echo "=====>安装wget命令" yum -y install wget >/dev/null 2>&1 fi
echo "=====>下载mysql安装包到:$software_dir" wget $mysql_package_url fi
echo "=====>解压缩mysql安装包" tar -xf $mysql_package_xz
mv $mysql_package $mysql_dir create_dir $mysql_data_dir create_dir $mysql_log_dir cd $mysql_dir
egrep "^$mysql_user_group" /etc/group >/dev/null 2>&1 if [ $? -ne 0 ] then echo "=====>创建mysql用户组" groupadd $mysql_user_group fi
egrep "^$mysql_user" /etc/passwd >/dev/null 2>&1 if [ $? -ne 0 ] then echo "=====>创建mysql用户" useradd -g $mysql_user_group $mysql_user fi
echo "=====>添加mysql用户权限" chown -R ${mysql_user_group}'.'${mysql_user} .
echo "=====>修改my.cnf配置文件" echo "[mysqld] # mysql 安装根目录 basedir=$mysql_dir # mysql 数据文件所在位置 datadir=$mysql_data_dir # socket 文件所在位置 socket=$mysql_dir/mysql.sock # 日志文件 log-error=$mysql_log_dir/mysql.log # pid pid-file=$mysql_dir/mysql.pid # 数据默认字符集 character-set-server=utf8mb4 # 数据库字符集对应一些排序等规则,注意要和 character-set-server 对应 collation-server=utf8mb4_general_ci # 端口 port=3306 # sql 模式 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES # 最大连接数 max_connections=2048 # 最大错误连接数 max_connect_errors=1000 # mysql 打开的文件描述符限制,当 open_files_limit 没有被配置的时候,比较 max_connections*5 和 ulimit -n 的值,哪个大用哪个 # 当 open_file_limit 被配置的时候,比较 open_files_limit 和 max_connections*5 的值,哪个大用哪个 open_files_limit = 65535 # mysql 服务的唯一编号,每个 mysql 服务 id 需唯一 server-id=1 # sql 数据包发送的大小 max_allowed_packet=128M # mysql 连接闲置超过一定时间后将会被强行关闭,默认为 8 个小时,interactive_timeout 参数需要同时配置才能生效 interactive_timeout=1800 wait_timeout=1800 # 慢查询sql日志设置 slow_query_log=1 slow_query_log_file=$mysql_log_dir/mysqld_slow.log # 慢查询执行的秒数,必须达到此值可被记录 long_query_time=2 # 检索的行数必须达到此值才可被记为慢查询 min_examined_row_limit=100
[client] socket=$mysql_dir/mysql.sock default-character-set=utf8mb4" > /etc/my.cnf
echo "=====>数据库初始化" ./bin/mysqld --user=$mysql_user --basedir=$mysql_dir --datadir=$mysql_data_dir --initialize
echo "=====>设置服务开机自启动" cp -a ${mysql_dir}/support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/rc.d/init.d/mysqld chkconfig --add mysqld
echo "=====>配置环境变量" echo "MYSQL_HOME=$mysql_dir PATH=\$PATH:\$MYSQL_HOME/bin" > $mysql_profile source $mysql_profile
echo "=====>启动mysql服务" systemctl restart mysql > /dev/null 2>&1
echo "=====>设置mysql配置,修改密码,远程访问" mysql_password=`awk '/A temporary password/{print $NF}' ./log/mysql.log` mysql -uroot -p"$mysql_password" -e " alter user 'root'@'localhost' identified with mysql_native_password by '$mysql_init_password'; use mysql; update user set host='%' where user='root' limit 1; flush privileges;" --connect-expired-password >/dev/null 2>&1
echo "=====>开启3306端口" firewall-cmd --zone=public --add-port=3306/tcp --permanent >/dev/null 2>&1 firewall-cmd --reload >/dev/null 2>&1
|