centos7下使用yum安装mysql
安装前准备
- 检查系统中是否安装了mysql rpm -qa|grep mysql
- 如果有安装mysql,则需要先卸载之前安装的mysql yum -y remove mysql
- 然后再查看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服务器,不管你执行什么命令都报这个错
代码语言:javascript复制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语句修改密码:
代码语言:javascript复制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)
代码语言:javascript复制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. 直接上代码
代码语言:javascript复制#!/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
- 修改文件权限 chmod -R 755 docker_install_mysql.sh
- 允许脚本 ./docker_install_mysql.sh
- 然后就可以喝口水坐等一键安装部署
安装后就可以进行MySQL远程连接使用了。