见到很多的 mysql 安装,Linux 安装也好,Windows 安装也罢,总之踩了不是一次两次的坑,故此总结一下。有句话说得好:【世界上本没有路,走的人多了,也便成了路】,其实我想说的是:【世界上本没有正确方法,踩的坑多了,也便总结出了正确方法】,希望路过的好心人可以点个赞,转载注明请出处。(本文只介绍 centos 系统, 以 centos 7 为例)
MySQL官网:点击这里跳转
点击图中箭头指的位置:
如果你是 Linux 系统点击红色箭头指的位置, Windows 系统则是蓝色箭头(Windows 系统红色箭头也可),唯一的区别就是:【点击蓝色箭头只能安装 Windows 系统的】。
预防有些人看不懂,贴个直接跳转链接:点我直接跳转
CentOS 系统的选择箭头指的部分(选择这个的原因是:我们一直都把 CentOS 称为 RedHat 的社区版)
下图从上往下依次是:(根据自己 Linux 版本,选择适合自己系统的 MySQL 版本)
- 下拉框所示的所有版本(如果不嫌麻烦,可以选择这个慢慢找)
- CentOS(RedHat) 8 x86 版本 (64位)
- CentOS(RedHat) 8 arm 版本 (64位)
- CentOS(RedHat) 7 x86 版本 (64位)
- CentOS(RedHat) 7 arm 版本 (64位)
- CentOS(RedHat) 6 x86 版本 (64位)
- CentOS(RedHat) 6 x86 版本 (32位)
arm 和 x86 指的是 Linux 系统架构:arm 和 x86 的区别,点我查看
# 使用`hostnamectl`命令查看内核版本
[root@用户名 ~]# hostnamectl
以下两个命令二选一
# 使用`uname`命令查看系统架构
[root@用户名 ~]# uname -m
# 使用`arch`命令查看系统架构
[root@用户名 ~]# arch
效果分别如下:(x86_64 是指: x86 版本 64 位)
点击 RPM Bundle 后面的 Download
预防有些人看不懂,贴个直接跳转链接:下载 MySQL 8.0.28 (x86 架构_64位的CentOS 7 系统)
【备注】:这个版本只适合和我括号标注内的 Linux 系统,其他的请自己根据我的下载步骤自行下载。
做个烂好人,再贴个arm 的下载链接:下载 MySQL 8.0.28 (arm 架构_64位的 CentOS 7 系统)
【备注】: 同上
下载后的效果如下(未解压):
熟悉 Linux 系统的童孩们应该也已经知道了这就是一堆 rpm 包。
【备注】:并不是说其他的 rpm 包就用不到,只是这几个 rpm 是安装 MySQL 必须要有的 rpm 包。
其实就是选择自己需要的包自定义下载,效果相同:
预防有些人找不到位置,故此贴一下下载链接:
MySQL 8.0.28_server (x86 架构_64位的 CentOS 7 系统)
MySQL 8.0.28_client (x86 架构_64位的 CentOS 7 系统)
MySQL 8.0.28_client_plugins (x86 架构_64位的 CentOS 7 系统)
MySQL 8.0.28_common (x86 架构_64位的 CentOS 7 系统)
MySQL 8.0.28_libs (x86 架构_64位的 CentOS 7 系统)
MySQL 8.0.28_icu-data-files (x86 架构_64位的 CentOS 7 系统)
【备注】:这个版本只适合和我括号标注内的 Linux 系统,其他的请自己根据我的下载步骤自行下载。
做个烂好人,再贴个arm 的下载链接:
MySQL 8.0.28_server (arm 架构_64位的 CentOS 7 系统)
MySQL 8.0.28_client (arm 架构_64位的 CentOS 7 系统)
MySQL 8.0.28_client_plugins (arm 架构_64位的 CentOS 7 系统)
MySQL 8.0.28_common (arm 架构_64位的 CentOS 7 系统)
MySQL 8.0.28_libs (arm 架构_64位的 CentOS 7 系统)
MySQL 8.0.28_icu-data-files (arn 架构_64位的 CentOS 7 系统)
【备注】: 同上
Linux 直接下载:(上述两种方式就一次性介绍了)
下载 MySQL 8.0.28 ( x86 架构_64位的CentOS 7 系统 ):
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
下载 MySQL 8.0.28 ( arm 架构_64位的CentOS 7 系统 ):
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-1.el7.aarch64.rpm-bundle.tar
下载 arm 架构的只需要吧
x86_
替换成aarch
就行了
例: mysql-community-server-8.0.28-1.el7.x86_64.rpm (x86 架构)
mysql-community-server-8.0.28-1.el7.aarch64.rpm(arm 架构)
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-server-8.0.28-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-client-8.0.28-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-client-plugins-8.0.28-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-common-8.0.28-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-libs-8.0.28-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-icu-data-files-8.0.28-1.el7.x86_64.rpm
这里解释一下,下载的并不是 Windows 安装包,而是在 Windows 主机上下载的 rpm 包。
通过方式一下载的 rpm bundle,你可以通过压缩软件 解压 到 Windows 系统本地,再通过 xftp 、 MobaXterm 等软件连接 Linux 把需要的 rpm 包 上传 到 Linux 系统中。
通过方式二下载的 rpm 包 除解压缩外,操作同上
下载的rpm bundle 的同学请注意
:需要通过下述命令解压:
tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar -C ./mysql
照顾有些童孩没学过 tar 命令:点我查看 tar 的基本使用
【注意
】:这里如果出现下图中错误
应该在当前目录下先执行
mkdir mysql
上述所有的步骤都是为了 rpm 安装准备的
):rpm 安装有一个弊端: 就是想要自定义安装路径会很麻烦,但是重置密码挺方便。
rpm -qa | grep mysql
rpm -e --nodeps + 查询到的名字
一定要修改 /tmp 目录权限
:
因为 mysql 安装过程中,会通过 mysql 用户在 /tmp 目录下新建 tmp_db 文件,所以需要给 /tmp 目录较大的权限
命令:
chown -R 777 /tmp
命令:
rpm -qa | grep libaio
rpm -qa | grep net-tools
安装
mysql-community-libs-8.0.28-1.el7.x86_64.rpm
的时候会有冲突。
命令:
yum remove mysql-libs
优先安装其他的 rpm 包的效果如下
:
这里会讲一下安装过程中 零y 遇到的一些小问题,并附上解决方案。
安装前请先 确认 零y 前面讲的安装前序工作
都已经做好了。
mysql-community-common-8.0.28-1.el7.x86_64.rpm
:命令:
rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm
【提醒】:输入命令如果报错,请确认自己的当前所在目录下是否有 rpm 包
2. 安装 mysql-community-client-plugins-8.0.28-1.el7.x86_64.rpm
:
命令:
rpm -ivh mysql-community-client-plugins-8.0.28-1.el7.x86_64.rpm
mysql-community-libs-8.0.28-1.el7.x86_64.rpm
:命令:
rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm
【注意】
:这里报错说明你没看安装前序工作,顺序执行一遍
4. 安装 mysql-community-client-8.0.28-1.el7.x86_64.rpm
:
命令:
rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm
mysql-community-server-8.0.28-1.el7.x86_64.rpm
:命令:
rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm
【注意】
:如果安装过程中提示
则需要先安装:mysql-community-icu-data-files-8.0.28-1.el7.x86_64.rpm
附上安装命令:
rpm -ivh mysql-community-icu-data-files-8.0.28-1.el7.x86_64.rpm
【出问题的童孩重点关注哦!】
说之前先附一个原文链接:原文链接
原文作者写的挺不错的,有问题的小伙伴可以点进去看一看
命令:
chmod -R 777 /var/lib/mysql
命令:
rm -rf /var/lib/mysql/*
命令:
service mysqld restart
无论输入什么命令,都会提示类似如下命令:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '****/mysql.sock' (2)
贴一下原文链接:原文链接
为了预防有偷懒的童孩,链接都不想点,话不多说,直接贴步骤:
命令:
service mysqld stop
命令:
find / -name '*.sock'
【提醒】
:记住以 mysql.sock 的路径 (就是复制)
【注意】:如果找不到这个文件,先启动 mysql 再执行
3. 修改 my.cnf 文件:
命令:
vim /etc/my.cnf
【注意
】: 红色框是需要添加的部分,蓝色框的部分需要保持一致,并且
这里是你前面复制的 mysql.sock 的路径。
添加部分的代码(复制粘贴要根据实际情况做修改):
[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
然后保存退出就好
命令:
mysqld --initialize --user=mysql
【说明】:–initialize 选项是以 【安全模式】来初始化,会为用户生成一个秘密,并将生成的密码标记为 已过期
,登录后你需要重新设置一个密码。
命令:
cat /var/log/mysqld.log
图中蓝色标注的地方就是生成的【临时】密码
【说明】:生成的密码会在日志中记录一次,所以只需要查看 mysqld 的日志就可以知道临时密码,并利用临时密码登陆一次 mysql 。
命令:
systemctl enable mysqld.service # 允许开机自启
systemctl disable mysqld.service # 禁止开机自启
【说明】: 设置开机自启是为了不让你每次开机都执行一次:stystemctl start mysqld.service
命令:
systemctl status mysqld / service mysqld status
命令:
service mysqld start / systemctl start mysqld.service
登陆 MySQL 之前一定要启动 MySQL 服务。
命令:
alter user 'root'@'localhost' identified by '你的密码';
【修改密码出现问题的童孩看过来!】
为了避免被人误会抄袭,贴一下原文链接:1819 报错点这里准没错
看下面的效果图,就是无论怎么设置密码,他都会提示
1819
错误码,而且按照本人提供的链接设置甚至还会出现1820
错误码,细心的童孩也可能已经发现了,零y 也出现了 同样的问题,在输入set global validate_password_policy=0;
的时候,1820
分外夺目。
不说废话了,直接贴代码
alter user 'root'@'localhost' identified by '$Password123';
【说明】:这个设置之所以能成功,是因为:MySQL 的初始密码的密码强度是 MEDIUM
,含义是:刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。(细心的童孩应该也能发现,是大写或者小写字母,其实 零y
也试过,只含有小写字母同样会有 1819
错误,只含有大写字母的没试过,但是同时含有:数字、小写、大写字母、特殊字符,一定可以成功)
很多童孩应该会觉得将密码设置为
$Password123
是很麻烦的事情,所以如果还想设置成 123456 怎么办(如果连接: 1819 报错点这里准没错 里面提到的做法有童孩一次性成功了,那恭喜你,很幸运,没遇到和零y
类似的问题),零y
在测试的过程中出现了下面的问题,并顺利的解决了。
先查看 MySQL 密码规则
SHOW VARIABLES LIKE 'validate_password%';
零 y
这里出现了两个密码规则,而且不一样。所以需要设置成一样的。
文章的最后贴一下 零y
的创作来源:视频连接