最新MySQL-5.7.40在云服务器Centos7.9安装部署

一、前言

  MySQL开源社区版官方下载网址:https://dev.mysql.com/downloads/mysql/

  如果已经安装了其它版本的MySQL5.7.x,需要安装MySQL-5.7.40,需要卸载旧版本,可参考【云服务器Centos7.9卸载 MySQL5.7.x 或 MySQL8.x 教程】卸载旧版。

  本教程指导如何安装最新的 MySQL-5.7.40 版本(最新2022年11月06日)。笔者不写丢三落四的教程,只写高质量教程,力求精益求精,希望和广大读者一起学习,有错误请指出,谢谢!

  本文由 @大白有点菜 原创,请勿盗用,转载请说明出处!如果觉得文章还不错,请点点赞,加关注,谢谢!

二、安装部署

1、Centos7默认安装 mariadb ,为防止和MySQL冲突,需要先卸载。

(1)查看mariadb的版本信息。

rpm -qa | grep mariadb

结果显示为(mariadb版本会有不同):mariadb-libs-5.5.65-2.el7.x86_64

(2)卸载(注意mariadb版本)。

sudo rpm -e mariadb-libs-5.5.65-2.el7.x86_64 --nodeps
2、在云服务器里下载MySQL安装包有两种方式:wgetcurl ,还可以在官网下载然后手动上传(不建议手动上传)。

官网下载:https://dev.mysql.com/downloads/mysql/

官网下载MySQL Community Server 5.7.40

(1)如果不存在 software 和 mysql 目录,就新建

mkdir -p /usr/software/mysql/

(2)切换到 /usr/software/mysql/

cd /usr/software/mysql/

(3)任选一种方式下载安装包

wget方式下载

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar

wget方式下载mysql-5.7.40

curl方式下载

curl -O https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar

curl方式下载mysql-5.7.40

3、解压 mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar

解压 mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar

主要关注以下5个rpm,因为有依赖关系,所以后续安装顺序不能乱

# 3个依赖包
mysql-community-common-5.7.40-1.el7.x86_64.rpm
mysql-community-libs-5.7.40-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm

# 客户端和服务端
mysql-community-client-5.7.40-1.el7.x86_64.rpm
mysql-community-server-5.7.40-1.el7.x86_64.rpm
4、笔者分享安装过程遇到的报错,演示不按顺序安装会报哪些错误。网上某些博文只会写组件安装顺序,并不会告诉你们为什么不能乱序安装!此教程不一样,看下去吧,笔者是绝对不会让各位读者失望滴!【踩坑 VS 填坑

(1)如果先安装 server 会怎么样?实践出真理,验证一下吧!

rpm -ivh mysql-community-server-5.7.40-1.el7.x86_64.rpm

先安装server报错

  先安装server报 缺少 client 和 common 依赖 的错!

(2)如果先安装 client 又会怎么样?

rpm -ivh mysql-community-client-5.7.40-1.el7.x86_64.rpm

先安装client同样报错

  先安装client报 缺少 libs 依赖 的错。

(3)先安装 mysql-community-libs-5.7.40-1.el7.x86_64.rpm 会不会报错呢?依然是实践出真理,安排!

rpm -ivh mysql-community-libs-5.7.40-1.el7.x86_64.rpm

先安装libs居然也报错

  What?先安装 libs 依赖还是报错,居然是 缺少 common 依赖 的错!

(4)通过前面的实践,确定 mysql-community-common-5.7.40-1.el7.x86_64.rpm 是第一个安装的

rpm -ivh mysql-community-common-5.7.40-1.el7.x86_64.rpm

common安装成功

  没毛病,安装 common 依赖成功,哈哈!

(5)接下来,mysql-community-libs-5.7.40-1.el7.x86_64.rpmmysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm 到底先安装哪个啊?那就试试呗!

先安装 mysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm 试试:

rpm -ivh mysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm

先安装libs-compat报错了

  哎呀,报错了,缺少 libs 依赖,看来 mysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm 不能先安装。

(6)安装 mysql-community-libs-5.7.40-1.el7.x86_64.rpm ,成功

rpm -ivh mysql-community-libs-5.7.40-1.el7.x86_64.rpm

安装libs成功

(7)接着安装 mysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm ,成功

rpm -ivh mysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm

安装libs compat也成功

(8)最后剩下 客户端【mysql-community-client-5.7.40-1.el7.x86_64.rpm】和服务端【mysql-community-server-5.7.40-1.el7.x86_64.rpm】,需要顺序吗?那当然,其实从第一次先安装server报错就可以看出,client优于server先安装。不信?不信就试试!

rpm -ivh mysql-community-server-5.7.40-1.el7.x86_64.rpm

client优于server先安装,不然报错

  看来没错,是要先安装 client ,再安装 server ,反过来会报错!

(9)安装 mysql-community-client-5.7.40-1.el7.x86_64.rpm ,成功

rpm -ivh mysql-community-client-5.7.40-1.el7.x86_64.rpm

安装client成功

(10)最后安装 mysql-community-server-5.7.40-1.el7.x86_64.rpm ,成功

rpm -ivh mysql-community-server-5.7.40-1.el7.x86_64.rpm

安装server成功

5、【总结】5个MySQL软件安装顺序不能乱,如下
rpm -ivh mysql-community-common-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.40-1.el7.x86_64.rpm
6、查看mysql各组件安装情况
rpm -qa|grep mysql

查看mysql各组件安装情况

7、此步骤一般情况不用管,当前yum仓库没有包含mysql-server相关包时,才需要安装。其实前面步骤只要正确部署,就不存在yum仓库没有包含mysql-server相关包的情况。

(1)查看yum仓库没有包含mysql-server相关包,有就不用执行 install mysql-server:

yum whatprovides mysql-server

查看yum仓库没有包含mysql-server相关包

(2)没有就安装 mysql-server:

yum -y install mysql-server

最后使用 yum 安装 MySQL Server

三、修改密码、启动

  MySQL刚安装是没有密码的,需要初始化一个临时密码,再去修改。

1、生成临时密码
sudo mysqld --initialize

(1)如果发现报错,如何解决呢?(这种报错情况,是笔者为了写教程,安装新版本,卸载旧版本,没有完全卸载干净,才出现的。卸载完全后重新安装新版本,却没有报错了。)
生成临时密码报错

(2)编辑 my.cnf 文件

vim /etc/my.cnf

(3)修改一处地方:

explicit_defaults_for_timestamp=true

修改my.cnf 文件

  保存退出后,再运行 sudo mysqld --initialize 命令就不会报错了(以前安装过低一点的版本,可能是历史遗留文件导致的,首次安装MySQL可以直接运行命令生成临时密码而不会报错)。

2、查看临时密码

(1)方法1查看临时密码:

grep 'temporary password' /var/log/mysqld.log

方法1查看临时密码

(2)方法2查看临时密码:

tail /var/log/mysqld.log

方法2查看临时密码

3、更改 /var/lib/mysql 目录权限
sudo chown -R mysql:mysql /var/lib/mysql
4、启动 MySQL 并查看启动情况

(1)设置开机启动 MySQL:

systemctl enable mysqld

(2-1)启动 MySQL:

systemctl start mysqld

(2-2)停止 MySQL:

systemctl stop mysqld

(2-3)查看 MySQL 运行状态:

systemctl status mysqld

查看 MySQL 运行状态,成功

(3)如果报这样的错,可能是以前安装过旧版本的MySQL,卸载后删除不干净的导致,可参考文章开头提到的【云服务器Centos7.9卸载 MySQL5.7.x 或 MySQL8.x 教程】去删除残余目录或文件:
systemctl start mysqld.service报错

systemctl status mysqld

systemctl status mysqld.service错误信息

(4)查看启动情况:

ps -aux|grep mysql

启动 MySQL 并查看启动情况

5、试试连接 MySQL 并输入临时密码
mysql -uroot -p

连接MySQL成功

6、修改root用户密码(例如 123456 等)
set password = password('123456');

修改MySQL密码

  输入 quit; 退出mysql登录。重新输入 mysql -uroot -p 命令,验证修改的密码是否正确

修改MySQL密码重新登录正常

四、实现Navicat连接

  如果要使用 Navicat 之类的辅助工具连接MySQL,需要MySQL提供账号和密码。但是MySQL默认不允许 root 用户被外部工具访问,只允许本地访问,所以需要新增对外的账户。

1、首先在云服务器控制中心 - 安全组 - 入站方向规则 放行3306端口(每个品牌的控制中心都不一样,原理差不多,都是在安全组配置允许某个端口入站或出站。有些博文写到是在虚拟机关闭防火墙,有些写到是在虚拟机配置允许某个端口,笔者建议不要关闭防火墙,形象点就是,一间屋子,可以装个门允许认识的人出入,但不要拆了门,谁都可以自由出入)。

天翼云控制中心-安全组
放行3306端口

2、创建新的用户。此用户用作Navicat客户端外网连接云服务器的MySQL。注意,所有符号都为英文符号,而且有空格限制。

格式:create user ‘新的用户名’@‘%’ identified by ‘密码’;

自行修改为自己的用户名和密码:

create user 'xxx'@'%' identified by 'xxx';

创建新的用户

3、给新用户分配权限。

格式:grant all privileges on . to ‘新的用户名’@‘%’ with grant option;

grant all privileges on *.* to 'zyt'@'%' with grant option;

给新用户分配权限

4、刷新权限。
flush privileges;

刷新权限

5、查询MySQL当前用户。
select user,host from mysql.user;

查询MySQL当前用户

  从MySQL的mysql数据库的user列表可以看出,字段“host”的值为“%”,代表所有IP都能访问,包括内网和外网。“host”的值为“localhost”,代表只能本地访问,root 用户就是只能本地访问。

  如果想要 root 用户也支持外网访问,设置“host”的值为“%” 即可,如下SQL语句。但这样就要求root用户密码设置得很复杂,密码为“123456”肯定是不可取的!

use mysql;
update user set host = '%' where user = 'root';
6、测试Navicat是否能成功连接。

测试Navicat是否能成功连接

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大白有点菜

你的鼓励决定文章的质量

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

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

打赏作者

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

抵扣说明:

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

余额充值