Centos 6/7安装mysql8.0.19脚本(RPM包方式)
因为看不惯网上的文章到处搬运,内容又不负责任,所以决定揭竿起义,以此作为第一篇博客的开始。abyn。
一、Mysql下载
(网上很多教程都只跟你说用什么版本的包,完全不告诉你去哪下载,有一种始乱终弃的感觉,所以我致力于能细则细)
进入MySQL官网:https://www.mysql.com/downloads/ (下载页)
选择MySQL Community (GPL) Downloads » (社区版)
选择Red Hat Enterprise Linux/ORACLE LINUX
选择Red Hat Enterprise Linux 7 /ORACLE LINUX 7 (X86,64-bit)
然后选择(mysql-8.0.20-1.el7.x86_64.rpm-bundle.tar) 点击右侧的download进行下载
随后会让你注册,点击下方的No thanks, just start my download.
如此即可下载到最新版本的mysql压缩包:
注①:可以下载旧版本的MySQL,5.7等版本,但是应该会扫描出一堆漏洞,除非特别需求,所以一般都安装新版本
注②:作者安装时最新版本是8.0.19,写文章时候更新到8.0.20,,安装方式一致。

二、安装MySQL
系统版本:Cent OS 7
内存: 2G
CPU: 2核
用户: root
这里提供了一个安装脚本,脚本内容相对详细,也比较简陋,请酌情更改使用。其实主要安装步骤就几步,剩下的都是一些装饰物,相信大家一看就懂。(其实脚本很简陋,就相当于用大白话写出来。)
1 #!/bin/bash 2 echo '安装开始前请您详细阅读以下内容,否则可能会导致安装失败' 3 sleep 2 4 echo -e '此脚本安装MySQL-8.0版本MySQL \n如果您的系统版本使用CentOS 7 系统,所需安装包为mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar\n如果您的系统版本使用CentOS 6 系统,所需软件包为mysql-8.0.20-1.el6.x86_64.rpm-bundle.tar' 5 sleep 2 6 echo '安装开始前,请将压缩包放到/usr/local/src/目录,否则脚本不会继续运行' 7 sleep 5 8 #检测运行环境 非centos7系统不能运行此脚本 9 echo '正在检测运行环境...' 10 sleep 2 11 RHversion=`cat /etc/redhat-release |awk '{match($0,"release") 12 print substr($0,RSTART+RLENGTH)}' | awk -F '.' '{print $1}'` 13 if [ $RHversion -eq 7 ];then 14 echo "您使用的系统版本为CentOS $RHversion" 15 sleep 1 16 #检测当前账户 17 echo '正在检测用户是否为root' 18 sleep 2 19 user=${USER} 20 if [ "$user" != root ];then 21 echo "当前用户不为root,正在退出..." 22 exit 1 23 fi 24 #检测libaio软件包 25 echo '正在检测依赖环境...' 26 libaio=`rpm -qa|grep libaio |wc -l` 27 libaioverison=`rpm -qa|grep libaio|awk -F"-" '{print $1$2}'` 28 if [ $libaio -eq 1 ];then 29 echo "libaio版本为$libaioverison" 30 else 31 echo '没有找到libaio依赖包,正在尝试安装' 32 yum install libaio -y 33 if [ $? -eq 0 ];then 34 echo "安装完成" 35 else 36 echo "安装失败,正在退出..." 37 sleep 2 38 exit 1 39 fi 40 fi 41 #检测是否有mysql压缩包 42 echo '检测是否有MySQL压缩包...' 43 sleep 2 44 if [ -f "/usr/local/src/mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar" ];then 45 echo '文件存在' 46 sleep 2 47 else 48 echo '您没有上传指定的MySQL压缩包或不在指定位置,文件上传位置为/usr/local/src/' 49 exit 1 50 fi 51 #卸载mariadb 52 echo '正在卸载mariadb...' 53 rpm -e --nodeps `rpm -qa|grep mariadb` 54 sleep 2 55 echo '卸载完成' 56 #添加mysql账户 57 TAR_DIR=/usr/local/src/ 58 MYSQL_TAR='mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar' 59 echo '开始安装MySQL,安装版本MySQL-8.0.19' 60 sleep 1 61 echo '添加mysql账户...' 62 if [ `grep 'mysql' /etc/passwd |wc -l ` -ge 1 ];then 63 echo '用户已经存在' 64 else 65 groupadd mysql && useradd -r -g mysql -s /sbin/nologin -M mysql 66 echo '用户添加成功' 67 fi 68 #解压MySQL压缩包 69 echo '正在解压...' 70 cd $TAR_DIR && tar xf $TAR_DIR$MYSQL_TAR 71 #安装MySQL 72 echo '正在安装MySQL...' 73 rpm -ivh mysql-community-common-8.0.19-1.el7.x86_64.rpm && rpm -ivh mysql-community-libs-8.0.19-1.el7.x86_64.rpm && rpm -ivh mysql-community-client-8.0.19-1.el7.x86_64.rpm && rpm -ivh mysql-community-server-8.0.19-1.el7.x86_64.rpm --force --nodeps 74 if [ $? -ne 0 ];then 75 echo '安装异常,请检查是否安装过mysql,正在退出安装程序' 76 exit 1 77 fi 78 #初始化MySQL 79 echo '正在初始化MySQL...' 80 mysqld --initialize 81 if [ $? -eq 0 ];then 82 echo '初始化完成' 83 else 84 echo '初始化失败,请检查是否安装libaio依赖' 85 fi 86 #写入my.cnf 87 cat << EOF > /etc/my.cnf 88 [mysqld] 89 # Remove leading # and set to the amount of RAM for the most important data 90 # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. 91 # innodb_buffer_pool_size = 128M 92 # 93 # Remove the leading "# " to disable binary logging 94 # Binary logging captures changes between backups and is enabled by 95 # default. It's default setting is log_bin=binlog 96 # disable_log_bin 97 # 98 # Remove leading # to set options mainly useful for reporting servers. 99 # The server defaults are faster for transactions and fast SELECTs. 100 # Adjust sizes as needed, experiment to find the optimal values. 101 # join_buffer_size = 128M 102 # sort_buffer_size = 2M 103 # read_rnd_buffer_size = 2M 104 # 105 # Remove leading # to revert to previous value for default_authentication_plugin, 106 # this will increase compatibility with older clients. For background, see: 107 # https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin 108 # default-authentication-plugin=mysql_native_password 109 110 datadir=/usr/local/mysql/data 111 socket=/var/lib/mysql/mysql.sock 112 113 log-error=/var/log/mysqld.log 114 pid-file=/var/run/mysqld/mysqld.pid 115 skip-name-resolve 116 default_password_lifetime=42 #密码默认42天过期 117 password_history=6 #存储最近的六次密码 118 password_reuse_interval=365 #最近六次密码一年内不得重复使用 119 EOF 120 #创建data目录并启动MySQL 121 echo '正在启动MySQL...' 122 mkdir /usr/local/mysql/data -p 123 chown -R mysql. /usr/local/mysql 124 systemctl start mysqld 125 sleep 4 126 echo 'datadir路径为/usr/local/mysql/data' 127 echo 'errorlog路径为/var/log/mysqld.log' 128 #检查MySQL进程是否启动 129 MySQLpid=`ss -antlp|grep 3306|wc -l` 130 if [ $MySQLpid -ne 0 ];then 131 echo 'MySQL启动成功' 132 else 133 echo 'error,mysql is not running' 134 tail -10f /var/log/mysqld.log 135 fi 136 #设置开机自启动 137 echo '正在设置自启动...' 138 systemctl enable mysqld 139 if [ $? -eq 0 ];then 140 echo '设置自启动成功' 141 else 142 echo '设置自启动失败' 143 fi 144 sleep 1 145 #更改密码安全策略 146 echo '正在设置密码策略...' 147 sleep 2 148 OLDPWD=`cat /var/log/mysqld.log |grep password|tail -1 |awk -F"host: " '{print $2}'` 149 NEWPWD="ITwh@@$[RANDOM%900+100]" 150 mysql --connect-expired-password -uroot -p"$OLDPWD" -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '"$NEWPWD"'" > /dev/null 151 mysql -uroot -p"$NEWPWD" -e "set global validate_password.policy=1;" -e "set global validate_password.length=11;" -e "set global validate_password.mixed_case_count=4;" -e " set global validate_password.number_count=3;" -e "set global validate_password.special_char_count=2;" > /dev/null 152 mysql -uroot -p"$NEWPWD" -e "show variables like 'validate_password%';" 153 sleep 2 154 echo -e "当前密码策略为:\n 1.密码默认42天过期 \n 2.存储最近的六次密码 \n 3.最近六次密码一年内不得重复使用 \n 4.密码最小长度12位 \n 5.密码至少要包含的小写字母个数和大写字母4个 \n 6.密码至少要包含的数字个数4个 \n 7.密码至少要包含的特殊字符数2个\n" 155 sleep 2 156 echo -e "MySQL初始密码为: $NEWPWD \n" 157 echo "修改密码: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';" 158 elif [ $RHversion -eq 6 ];then 159 echo "您使用的系统版本为CentOS $RHversion" 160 sleep 1 161 #检测当前账户 162 echo '正在检测用户是否为root' 163 sleep 2 164 user=${USER} 165 if [ "$user" != root ];then 166 echo "当前用户不为root,正在退出..." 167 exit 1 168 fi 169 #检测libaio软件包 170 echo '正在检测依赖环境...' 171 libaio=`rpm -qa|grep libaio |wc -l` 172 libaioverison=`rpm -qa|grep libaio|awk -F"-" '{print $1$2}'` 173 if [ $libaio -eq 1 ];then 174 echo "libaio版本为$libaioverison" 175 else 176 echo '没有找到libaio依赖包,正在尝试安装' 177 yum install libaio -y 178 if [ $? -eq 0 ];then 179 echo "安装完成" 180 else 181 echo "安装失败,正在退出..." 182 sleep 2 183 exit 1 184 fi 185 fi 186 #检测numactl软件包 187 numactl=`rpm -qa|grep numactl|wc -l` 188 numactlversion=`rpm -qa|grep numactl|awk -F"-" '{print $1,$2}'` 189 if [ $numactl -eq 1 ];then 190 echo "numactl版本为$numactlversion" 191 else 192 echo '没有找到numactl依赖包,正在尝试安装' 193 yum install numactl -y 194 if [ $? -eq 0 ];then 195 echo "安装完成" 196 else 197 echo "安装失败,正在退出..." 198 sleep 2 199 exit 1 200 fi 201 fi 202 #检测是否有mysql压缩包 203 echo '检测是否有MySQL压缩包...' 204 sleep 2 205 if [ -f "/usr/local/src/mysql-8.0.20-1.el6.x86_64.rpm-bundle.tar" ];then 206 echo '文件存在' 207 sleep 2 208 else 209 echo '您没有上传指定的MySQL压缩包或不在指定位置,文件上传位置为/usr/local/src/' 210 exit 1 211 fi 212 #卸载mariadb 213 echo '正在卸载mariadb...' 214 rpm -e --nodeps `rpm -qa|grep mariadb` 215 sleep 2 216 echo '卸载完成' 217 #添加mysql账户 218 TAR_DIR=/usr/local/src/ 219 MYSQL_TAR='mysql-8.0.20-1.el6.x86_64.rpm-bundle.tar' 220 echo '开始安装MySQL,安装版本MySQL-8.0.19' 221 sleep 1 222 echo '添加mysql账户...' 223 if [ `grep 'mysql' /etc/passwd |wc -l ` -ge 1 ];then 224 echo '用户已经存在' 225 else 226 groupadd mysql && useradd -r -g mysql -s /sbin/nologin -M mysql 227 echo '用户添加成功' 228 fi 229 #解压MySQL压缩包 230 echo '正在解压...' 231 cd $TAR_DIR && tar xf $TAR_DIR$MYSQL_TAR 232 #安装MySQL 233 echo '正在安装MySQL...' 234 rpm -ivh mysql-community-common-8.0.20-1.el6.x86_64.rpm && rpm -ivh mysql-community-libs-8.0.20-1.el6.x86_64.rpm && rpm -ivh mysql-community-client-8.0.20-1.el6.x86_64.rpm && rpm -ivh mysql-community-server-8.0.20-1.el6.x86_64.rpm --force --nodeps 235 if [ $? -ne 0 ];then 236 echo '安装异常,请检查是否安装过mysql,正在退出安装程序' 237 exit 1 238 fi 239 #初始化MySQL 240 echo '正在初始化MySQL...' 241 mysqld --initialize 242 if [ $? -eq 0 ];then 243 echo '初始化完成' 244 else 245 echo '初始化失败,请检查是否安装libaio依赖' 246 fi 247 #写入my.cnf 248 cat << EOF > /etc/my.cnf 249 [mysqld] 250 # Remove leading # and set to the amount of RAM for the most important data 251 # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. 252 # innodb_buffer_pool_size = 128M 253 # 254 # Remove the leading "# " to disable binary logging 255 # Binary logging captures changes between backups and is enabled by 256 # default. It's default setting is log_bin=binlog 257 # disable_log_bin 258 # 259 # Remove leading # to set options mainly useful for reporting servers. 260 # The server defaults are faster for transactions and fast SELECTs. 261 # Adjust sizes as needed, experiment to find the optimal values. 262 # join_buffer_size = 128M 263 # sort_buffer_size = 2M 264 # read_rnd_buffer_size = 2M 265 # 266 # Remove leading # to revert to previous value for default_authentication_plugin, 267 # this will increase compatibility with older clients. For background, see: 268 # https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin 269 # default-authentication-plugin=mysql_native_password 270 271 datadir=/usr/local/mysql/data 272 socket=/var/lib/mysql/mysql.sock 273 274 log-error=/var/log/mysqld.log 275 pid-file=/var/run/mysqld/mysqld.pid 276 skip-name-resolve 277 default_password_lifetime=42 #密码默认42天过期 278 password_history=6 #存储最近的六次密码 279 password_reuse_interval=365 #最近六次密码一年内不得重复使用 280 EOF 281 #创建data目录并启动MySQL 282 echo '正在启动MySQL...' 283 mkdir /usr/local/mysql/data -p 284 chown -R mysql. /usr/local/mysql 285 service mysqld start 286 sleep 4 287 echo 'datadir路径为/usr/local/mysql/data' 288 echo 'errorlog路径为/var/log/mysqld.log' 289 #检查MySQL进程是否启动 290 MySQLpid=`ss -antlp|grep 3306|wc -l` 291 if [ $MySQLpid -ne 0 ];then 292 echo 'MySQL启动成功' 293 else 294 echo 'error,mysql is not running' 295 tail -10f /var/log/mysqld.log 296 fi 297 #设置开机自启动 298 echo '正在设置自启动...' 299 chkconfig --add mysqld 300 chkconfig mysqld on 301 if [ $? -eq 0 ];then 302 echo '设置自启动成功' 303 else 304 echo '设置自启动失败' 305 fi 306 sleep 1 307 #更改密码安全策略 308 echo '正在设置密码策略...' 309 sleep 2 310 OLDPWD6=`cat /var/log/mysqld.log |grep password|tail -1 |awk -F"host: " '{print $2}'` 311 NEWPWD6="ITwh@@$[RANDOM%900+100]" 312 mysql --connect-expired-password -uroot -p"$OLDPWD6" -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '"$NEWPWD6"'" > /dev/null 313 mysql -uroot -p"$NEWPWD6" -e "set global validate_password.policy=1;" -e "set global validate_password.length=11;" -e "set global validate_password.mixed_case_count=4;" -e " set global validate_password.number_count=3;" -e "set global validate_password.special_char_count=2;" > /dev/null 314 mysql -uroot -p"$NEWPWD6" -e "show variables like 'validate_password%';" 315 sleep 2 316 echo -e "当前密码策略为:\n 1.密码默认42天过期 \n 2.存储最近的六次密码 \n 3.最近六次密码一年内不得重复使用 \n 4.密码最小长度12位 \n 5.密码至少要包含的小写字母个数和大写字母4个 \n 6.密码至少要包含的数字个数4个 \n 7.密码至少要包含的特殊字符数2个\n" 317 sleep 2 318 echo -e "MySQL初始密码为: $NEWPWD6 \n" 319 echo "修改密码: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';" 320 else 321 echo '没想好' 322 fi
附赠执行过程:(其中mysql的各个路径都声明出来了)
安装开始前请您详细阅读以下内容,否则可能会导致安装失败 此脚本安装MySQL-8.0版本MySQL 如果您的系统版本使用CentOS 7 系统,所需安装包为mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar 如果您的系统版本使用CentOS 6 系统,所需软件包为mysql-8.0.20-1.el6.x86_64.rpm-bundle.tar 安装开始前,请将压缩包放到/usr/local/src/目录,否则脚本不会继续运行 正在检测运行环境... 您使用的系统版本为CentOS 7 正在检测用户是否为root 正在检测依赖环境... libaio版本为libaio0.3.109 检测是否有MySQL压缩包... 文件存在 正在卸载mariadb... rpm: no packages given for erase 卸载完成 开始安装MySQL,安装版本MySQL-8.0.19 添加mysql账户... 用户已经存在 正在解压... 正在安装MySQL... warning: mysql-community-common-8.0.19-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:mysql-community-common-8.0.19-1.e################################# [100%] warning: mysql-community-libs-8.0.19-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:mysql-community-libs-8.0.19-1.el7################################# [100%] warning: mysql-community-client-8.0.19-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:mysql-community-client-8.0.19-1.e################################# [100%] warning: mysql-community-server-8.0.19-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:mysql-community-server-8.0.19-1.e################################# [100%] 正在初始化MySQL... 初始化完成 正在启动MySQL... datadir路径为/usr/local/mysql/data errorlog路径为/var/log/mysqld.log MySQL启动成功 正在设置自启动... 设置自启动成功 正在设置密码策略... mysql: [Warning] Using a password on the command line interface can be insecure. mysql: [Warning] Using a password on the command line interface can be insecure. mysql: [Warning] Using a password on the command line interface can be insecure. +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 13 | | validate_password.mixed_case_count | 4 | | validate_password.number_count | 3 | | validate_password.policy | MEDIUM | | validate_password.special_char_count | 2 | +--------------------------------------+--------+ 当前密码策略为: 1.密码默认42天过期 2.存储最近的六次密码 3.最近六次密码一年内不得重复使用 4.密码最小长度12位 5.密码至少要包含的小写字母个数和大写字母4个 6.密码至少要包含的数字个数4个 7.密码至少要包含的特殊字符数2个 MySQL初始密码为: ITwh@@582 修改密码: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
abyn。

浙公网安备 33010602011771号