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)查看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
官网下载:https://dev.mysql.com/downloads/mysql/
(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
curl方式下载:
curl -O https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar
tar -xvf 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
踩坑
VS 填坑
】(1)如果先安装 server 会怎么样?实践出真理,验证一下吧!
rpm -ivh mysql-community-server-5.7.40-1.el7.x86_64.rpm
先安装server报 缺少 client 和 common 依赖
的错!
(2)如果先安装 client 又会怎么样?
rpm -ivh mysql-community-client-5.7.40-1.el7.x86_64.rpm
先安装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
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 依赖成功,哈哈!
(5)接下来,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-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 依赖
,看来 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
(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
(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 ,反过来会报错!
(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
(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
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
rpm -qa|grep mysql
(1)查看yum仓库没有包含mysql-server相关包,有就不用执行 install mysql-server:
yum whatprovides mysql-server
(2)没有就安装 mysql-server:
yum -y install mysql-server
MySQL刚安装是没有密码的,需要初始化一个临时密码,再去修改。
sudo mysqld --initialize
(1)如果发现报错,如何解决呢?(这种报错情况,是笔者为了写教程,安装新版本,卸载旧版本,没有完全卸载干净,才出现的。卸载完全后重新安装新版本,却没有报错了。)
(2)编辑 my.cnf 文件
vim /etc/my.cnf
(3)修改一处地方:
explicit_defaults_for_timestamp=true
保存退出后,再运行 sudo mysqld --initialize
命令就不会报错了(以前安装过低一点的版本,可能是历史遗留文件导致的,首次安装MySQL可以直接运行命令生成临时密码而不会报错)。
(1)方法1查看临时密码:
grep 'temporary password' /var/log/mysqld.log
(2)方法2查看临时密码:
tail /var/log/mysqld.log
sudo chown -R mysql:mysql /var/lib/mysql
(1)设置开机启动 MySQL:
systemctl enable mysqld
(2-1)启动 MySQL:
systemctl start mysqld
(2-2)停止 MySQL:
systemctl stop mysqld
(2-3)查看 MySQL 运行状态:
systemctl status mysqld
(3)如果报这样的错,可能是以前安装过旧版本的MySQL,卸载后删除不干净的导致,可参考文章开头提到的【云服务器Centos7.9卸载 MySQL5.7.x 或 MySQL8.x 教程】去删除残余目录或文件:
systemctl status mysqld
(4)查看启动情况:
ps -aux|grep mysql
mysql -uroot -p
set password = password('123456');
输入 quit;
退出mysql登录。重新输入 mysql -uroot -p 命令,验证修改的密码是否正确。
如果要使用 Navicat 之类的辅助工具连接MySQL,需要MySQL提供账号和密码。但是MySQL默认不允许 root 用户被外部工具访问,只允许本地访问,所以需要新增对外的账户。
放行3306端口
(每个品牌的控制中心都不一样,原理差不多,都是在安全组配置允许某个端口入站或出站。有些博文写到是在虚拟机关闭防火墙,有些写到是在虚拟机配置允许某个端口,笔者建议不要关闭防火墙,形象点就是,一间屋子,可以装个门允许认识的人出入,但不要拆了门,谁都可以自由出入)。格式:create user ‘新的用户名’@‘%’ identified by ‘密码’;
自行修改为自己的用户名和密码:
create user 'xxx'@'%' identified by 'xxx';
格式:grant all privileges on . to ‘新的用户名’@‘%’ with grant option;
grant all privileges on *.* to 'zyt'@'%' with grant option;
flush privileges;
select user,host from mysql.user;
从MySQL的mysql数据库的user列表可以看出,字段“host”的值为“%”,代表所有IP都能访问,包括内网和外网。“host”的值为“localhost”,代表只能本地访问,root 用户就是只能本地访问。
如果想要 root 用户也支持外网访问,设置“host”的值为“%” 即可,如下SQL语句。但这样就要求root用户密码设置得很复杂,密码为“123456”肯定是不可取的!
use mysql;
update user set host = '%' where user = 'root';