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。

posted @ 2020-05-07 18:11  bk菜鸟  阅读(746)  评论(0)    收藏  举报