zl程序教程

您现在的位置是:首页 >  系统

当前栏目

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

Linuxcentos7安装 mysql5.7 相杀
2023-06-13 09:11:07 时间

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远程连接使用了。