MySql安装及部署
一、MySql安装
1、安装准备
1)如果是虚拟机服务器,按照如下步骤准备MySQL安装前环境
(1)卸载自带的mariadb以及如果之前安装过MySQL,需要全都卸载掉
①先查看是否安装过MySQL或者mariadb
[xxx@hadoop102 software]$
rpm -qa | grep -i -E mysql|mariadb
mariadb-libs-5.5.56-2.el7.x86_64
mysql-community-libs-5.7.16-1.el7.x86_64
mysql-community-client-5.7.16-1.el7.x86_64
mysql-community-common-5.7.16-1.el7.x86_64
mysql-community-libs-compat-5.7.16-1.el7.x86_64
mysql-community-server-5.7.16-1.el7.x86_64
②出现以上任何一个都需要卸载(之前安装mysql版本不同内容也可能不同)
用下面的命令进行卸载
[xxx@hadoop102 software]$
rpm -qa | grep -i -E mysql|mariadb | xargs -n1 sudo rpm -e --nodeps
(2)如果之前安装过MySQL需要清空原先的所有数据
①通过/etc/my.cnf查看MySQL数据的存储位置
[xxx@hadoop102 software]$ sudo cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
②去往/var/lib/mysql以下得拿root权限
[xxx@hadoop102 mysql]$ su - root
[root@hadoop102 ~]#
cd /var/lib/mysql
[root@hadoop102 mysql]#
rm -rf * (注意敲击命令的位置)
2)如果是阿里云服务器,按照如下步骤准备MySQL安装前环境
说明:由于阿里云服务器安装的是Linux最小系统版,没有如下工具,所以需要安装。
(1)卸载MySQL依赖,虽然机器上没有装MySQL,但是这一步不可少
[xxx@hadoop102 software]# sudo yum remove mysql-libs
(2)下载依赖并安装
[xxx@hadoop102 software]# sudo yum install libaio
[xxx@hadoop102 software]# sudo yum -y install autoconf
2、安装MySql
1)上传MySQL安装包以及MySQL驱动jar包
mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
mysql-connector-java-5.1.37.jar
2)解压MySQL安装包
[xxx@hadoop102 software]$ mkdir mysql_lib
[xxx@hadoop102 software]$
tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C mysql_lib/
3)安装MySQL依赖
[xxx@hadoop102 software]$ cd mysql_lib
[xxx@hadoop102 mysql_lib]$
sudo rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
[xxx@hadoop102 mysql_lib]$
sudo rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
[xxx@hadoop102 mysql_lib]$
sudo rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
4)安装mysql-client
[xxx@hadoop102 mysql_lib]$
sudo rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
5)安装mysql-server
[xxx@hadoop102 mysql_lib]$
sudo rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
注意:如果报如下错误,这是由于yum安装了旧版本的GPG keys所造成,从rpm版本4.1后,在安装或升级软件包时会自动检查软件包的签名。
warning: 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
libaio.so.1()(64bit) is needed by mysql-community-server-5.7.16-1.el7.x86_64
解决办法:
[xxx@hadoop102 software]$ sudo yum -y install libaio
6)启动MySQL
[xxx@hadoop102 software]$
sudo systemctl start mysqld
7)查看MySQL密码
[xxx@hadoop102 software]$
sudo cat /var/log/mysqld.log | grep password
3、配置MySql
1)用刚刚查到的密码进入MySQL(如果报错,给密码加单引号)
[xxx@hadoop102 software]$ mysql -uroot -p’password’
2)设置复杂密码(由于MySQL密码策略,此密码必须足够复杂)
mysql> set password=password(“Qs23=zs32”);
3)更改MySQL密码策略
mysql> set global validate_password_length=4;
mysql> set global validate_password_policy=0;
4)设置简单好记的密码
mysql> set password=‘123456’;
5)进入MySQL库
mysql> use mysql
6)查询user表
mysql> select user, host from user;
7)修改user表,把Host表内容修改为%
mysql> update user set host=“%” where user=“root”;
8)刷新
mysql> flush privileges;
9)退出
mysql> quit;
4、脚本形式安装
切换至root用户
[root@hadoop102 mysql]# vim install_mysql.sh
#!/bin/bash
set -x
[ "$(whoami)" = "root" ] || exit 1
[ "$(ls *.rpm | wc -l)" = "7" ] || exit 1
test -f mysql-community-client-8.0.31-1.el7.x86_64.rpm && \
test -f mysql-community-client-plugins-8.0.31-1.el7.x86_64.rpm && \
test -f mysql-community-common-8.0.31-1.el7.x86_64.rpm && \
test -f mysql-community-icu-data-files-8.0.31-1.el7.x86_64.rpm && \
test -f mysql-community-libs-8.0.31-1.el7.x86_64.rpm && \
test -f mysql-community-libs-compat-8.0.31-1.el7.x86_64.rpm && \
test -f mysql-community-server-8.0.31-1.el7.x86_64.rpm || exit 1
# 卸载MySQL
systemctl stop mysql mysqld 2>/dev/null
rpm -qa | grep -i 'mysql\|mariadb' | xargs -n1 rpm -e --nodeps 2>/dev/null
rm -rf /var/lib/mysql /var/log/mysqld.log /usr/lib64/mysql /etc/my.cnf /usr/my.cnf
set -e
# 安装并启动MySQL
yum install -y *.rpm >/dev/null 2>&1
systemctl start mysqld
#更改密码级别并重启MySQL
sed -i '/\[mysqld\]/avalidate_password.length=4\nvalidate_password.policy=0' /etc/my.cnf
systemctl restart mysqld
# 更改MySQL配置
tpass=$(cat /var/log/mysqld.log | grep "temporary password" | awk '{print $NF}')
cat << EOF | mysql -uroot -p"${tpass}" --connect-expired-password >/dev/null 2>&1
set password='000000';
update mysql.user set host='%' where user='root';
alter user 'root'@'%' identified with mysql_native_password by '000000';
flush privileges;
EOF
执行脚本install_mysql.sh