Linux安装MySql5.7——在centos7中与MySQL5.7安装的相恨相杀

centos7下使用yum安装mysql

安装前准备

  1. 检查系统中是否安装了mysql
    rpm -qa|grep mysql
  2. 如果有安装mysql,则需要先卸载之前安装的mysql
    yum -y remove mysql
  3. 然后再查看mysql是否都卸载完成,如果还有没卸载完成的,则单独卸载
    yum -y remove mysql-libs-5.1.73-8.el6_8.x86_64
    在这里插入图片描述

安装mysql5.7

CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。(注意root用户权限问题)

  1. 下载mysql的repo源
    mysql5.6:mysql-community-release-el7-5.noarch.rpm
    mysql5.7:mysql57-community-release-el7-8.noarch.rpm
    wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
  2. 安装mysql57-community-release-el7-8.noarch.rpm包
    rpm -ivh mysql57-community-release-el7-8.noarch.rpm
    安装这个包后,会获得两个mysql的yum repo源:
    /etc/yum.repos.d/mysql-community.repo 和 /etc/yum.repos.d/mysql-community-source.repo。
  3. 安装mysql
    yum install mysql-server
    根据步骤安装就可以了,不过安装完成后,没有密码,需要重置密码。
  4. 重置密码
    重置密码前,首先要登录
    mysql -u root -p
    登录时有可能报这样的错:ERROR 2002 (HY000):
    Can‘t connect to local MySQL server through socket ‘var/lib/mysql/mysql.sock’
    解决方法:
    方法一. 下面的命令把/var/lib/mysql的拥有者改为当前用户:
    chown -R 当前用户 /var/lib/mysql
    方法二. 删除/var/lib/mysql /后重启MySQL服务就可以了!
    rm -rf /var/lib/mysql
    然后,重启服务:
    service mysqld restart
    重启成功后查看服务状态:
    service mysqld status
    接下来登录重置密码:
    注意:yum安装的MySQL5.7登录前是有一个随机的临时密码的,我们需要先取得这个随机密码,以用于登录 MySQL 服务端;而使用MySQL5.6源安装的MySQL是没有临时密码的无需输入密码就可以登录。
    获取临时随机密码:
    cat /var/log/mysqld.log | grep password在这里插入图片描述
    将会返回如下内容,末尾字符串就是密码,把它复制下来:
    A temporary password is generated for root@localhost: MkarQyrS6v/U
    MkarQyrS6v/U 就是root登录的密码了。
    接下来可以登录进去,但是你会发现:登陆到MySQL服务器,不管你执行什么命令都报这个错
    mysql> show databases;
    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
    mysql> use test;
    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
    ...
    ...
    
    通过一番折腾:他是要你修改密码(而且只能使用ALTER USER修改),才能有权限使用MySQL
    alter user user() identified by "123456";
    那就修改吧,但是你会发现它又报错了,密码策略问题异常信息:
    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    解决办法:
    1、查看 mysql 初始的密码策略,
    输入语句SHOW VARIABLES LIKE 'validate_password%';进行查看,
    2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
    输入设值语句set global validate_password_policy=LOW;进行设值,
    3、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,
    输入设值语句set global validate_password_length=6;进行设值,
    4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,
    输入修改语句ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';可以看到修改成功,表示密码策略修改成功了!!!
    注:在默认密码的长度最小值为 4 ,由 大/小写字母各一个 + 阿拉伯数字一个 + 特殊字符一个
    关于 mysql 密码策略相关参数;
    1)、validate_password_length 固定密码的总长度;
    2)、validate_password_dictionary_file 指定密码验证的文件路径;
    3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
    4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
    5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
    关于 validate_password_policy 的取值:
    0/LOW:只验证长度;
    1/MEDIUM:验证长度、数字、大小写、特殊字符;
    2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
    6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;

MySQL语句修改密码

通过一番折腾再折腾后,我们就可以使用正常的MySQL语句修改密码:

mysql> use mysql;
mysql> update user set password=password("你的新密码") where user="root";
mysql> flush privileges;
mysql> quit

然后你会发现又报错了:Unknown column ‘password’ in ‘field list’,
原来是mysql数据库下已经没有password这个字段了,password 字段改成了 authentication_string
所以更改语句替换为update user set authentication_string=password(“你的新密码”) where user=“root”;即可在这里插入图片描述

MySQL远程登录授权

MySQL远程登录授权问题:
设置用户 root 可以在任意 IP 下被访问:
grant all privileges on *.* to root@"%" identified by "new password";

移除用户 root 允许被远程访问:
REVOKE ALL PRIVILEGES ON *.* FROM root@'%';

如果你想允许用户root从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
grant all privileges on *.* to root@"192.168.1.3" identified by "new fpassword" with grant option;
移除用户 root 允许被ip为192.168.1.3的主机远程访问:
REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'192.168.1.3';

删除之前设置的远程登录信息(user,ip,password)

mysql> use mysql;

mysql> select host,user from user where user='root';

mysql> delete from user where user='root' and host='192.168.1.3';

mysql> flush privileges;

mysql> select host,user from user where user='root';#可以看到已经删除了

在这里插入图片描述

如果移除远程访问的授权后还可以远程登录。则进行删除需要移除的信息。

刷新权限使之生效:
flush privileges;

使用shell脚本一键安装MySQL5.7

如果不是在线上环境安装mysql,我们可以使用docker快捷搭建MySQL环境。
docker的具体使用可以参考我的另一篇文章:http://qkongtao.cn/?p=587

接下来要介绍的是使用shell脚本一键部署docker环境,并且安装MySQL5.7
步骤如下:

  1. 在Linux目录下面新建文件 docker_install_mysql.sh
    vi docker_install_mysql.sh
  2. 直接上代码
#!/bin/bash

# description: CentOS7安装Docker
# author: tao

# 卸载旧版本

if [ -n "$1" ]; then
   # 校验传入参数 
    if [ "$1" = "-r" ]
    then
	echo "开始卸载已有Docker服务..."
	systemctl stop docker
	yum -y remove docker-ce
	rm -rf /var/lib/docker
	yum -y remove docker docker-common docker-selinux docker-engine
    else
       	echo " "
		echo "=================================="
		echo "=============安装失败============="
		echo "=================================="
		echo "非法参数:$1"
		echo "=================================="
		echo "首次安装:./docker-install.sh"
		echo "重新安装:./docker-install.sh -r"
		echo "=================================="
		echo " "
    fi
fi

echo "开始安装Docker服务..."

# 安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum软件索引
yum makecache fast
# 安装Docker-ce
yum -y install docker-ce
# 启动Docker
systemctl start docker
# 开机自启
systemctl enable docker
# 配置Docker镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://c2yf9ia3.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

echo " "
echo "=================================="
echo "=============安装成功============="
echo "=================================="
echo " "

docker ps


# description: 更换Centos7默认镜像源为阿里源
cd /etc/yum.repos.d/

# 备份原配置
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup


# 下载阿里镜像配置
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo


echo " "
echo "=================="
echo "更换阿里镜像源成功"
echo "=================="
echo " "

# 重新生成缓存
yum makecache



# description: 使用Docker安装Mysql5.7
version=5.7
password=123456
port=3306

if [[ $1 == -v* ]];then
	version=${1:2}
elif [[ $1 == -P* ]];then
	password=${1:2}
elif [[ $1 == -p* ]];then
	port=${1:2}
fi

if [[ $2 == -v* ]];then
	version=${2:2}
elif [[ $2 == -P* ]];then
	password=${2:2}
elif [[ $2 == -p* ]];then
	port=${2:2}
fi

if [[ $3 == -v* ]];then
	version=${3:2}
elif [[ $3 == -P* ]];then
	password=${3:2}
elif [[ $3 == -p* ]];then
	port=${3:2}
fi


echo " "
echo "============================"
echo "=======开始安装MySQL========"
echo "============================"
echo "Version:$version"
echo "Password:$password"
echo "Port:$port"
echo "============================"
echo " "

# 拉去镜像
docker pull mysql:$version

# 运行镜像
docker run --restart=always -p $port:3306 --name mysql$version -e MYSQL_ROOT_PASSWORD=$password -d mysql:$version


echo "============================"
echo "=======安装MySQL成功========"
echo "============================"

docker ps
  1. 修改文件权限
    chmod -R 755 docker_install_mysql.sh

  2. 允许脚本
    ./docker_install_mysql.sh

  3. 然后就可以喝口水坐等一键安装部署
    在这里插入图片描述
    安装后就可以进行MySQL远程连接使用了。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愿意做鱼的小鲸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值