Linux

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

Nick · 9月1日 · 2021年 · · 本文6225字 · 阅读16分钟53

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
    Linux安装MySql5.7——在centos7中与MySQL5.7安装的相恨相杀-左眼会陪右眼哭の博客

安装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
Linux安装MySql5.7——在centos7中与MySQL5.7安装的相恨相杀-左眼会陪右眼哭の博客
将会返回如下内容,末尾字符串就是密码,把它复制下来:
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”;即可
Linux安装MySql5.7——在centos7中与MySQL5.7安装的相恨相杀-左眼会陪右眼哭の博客

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';#可以看到已经删除了

Linux安装MySql5.7——在centos7中与MySQL5.7安装的相恨相杀-左眼会陪右眼哭の博客

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

刷新权限使之生效:
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. 然后就可以喝口水坐等一键安装部署
    Linux安装MySql5.7——在centos7中与MySQL5.7安装的相恨相杀-左眼会陪右眼哭の博客
    安装后就可以进行MySQL远程连接使用了。

0 条回应
在线人数:2人
隐藏