centos7从卸载到安装mysql8
前言
最近需要将一个springboot工程搭建到阿里云服务器,结果从购买服务器,到安装jdk17,再到安装好mysql8,居然用了整整两天。
我参考了网上很多博客,结果各种报错,其中不止包括阿里云服务器ssh连接异常,socket连接异常,systemctl未找到等,我一度怀疑是否智子锁死了我的服务器,一度想删库跑路…
最终,在b站找到了答案。实例安装只出现了一些小问题(见的多了就习惯了),本博客可以说是网络上centos7安装mysql8教程的集大成者。
卸载之前的mysql
- 查看已安装的MySQL
yum list installed | grep mysql
- 卸载
yum remove -y mysql*
- 删除剩余的MySQL相关文件和文件夹(熟悉的rm -rf)
find / -name mysql
将找到的相关文件和文件夹依次rm -rf
rm -rf 文件/文件夹
- 检查是否还有mysql依赖(防止复活)
rpm -qa | grep mysql
如果有则卸载
//普通删除模式
rpm -e xxx(mysql_libs)
//强力删除模式,如果上述命令删除时,提示有依赖其他文件,则可以用该命令对其进行强力删除
rpm -e --nodeps xxx(mysql_libs)
- 检查是否有mariadb
rpm -qa | grep mariadb
如果有则卸载
rpm -e --nodeps 相关文件
-
- 进行以上操作后建议进行快照
安装mysql8
- 安装mysql依赖包
yum install libaio
如果提示
http://mirrors.cloud.aliyuncs.com/centos/%24releasever/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found
就说明yum源中$releasever不能被系统识别,解决方法
- 从官网下载好mysql包
- 使用xftp等软件将下载好的包上传到/opt目录下
- 解压
进入/opt目录下将mysql文件解压,注意不同后缀的压缩包解压命令有所不同
cd /opt
tar -zxvf your_archive.gz
tar -xvf your_archive.tar
我们查看一下是否解压好了
ls
- 解压后使用下面命令安装
# 依次安装以下依赖
rpm -ivh mysql-community-common-8.0.36-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-client-plugins-8.0.36-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-client-8.0.36-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-icu-data-files-8.0.36-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-server-8.0.36-1.el7.x86_64.rpm --force --nodeps
- 注意,如果你解压后的文件如果不是.rpm,你应该换个安装教程了
安装后的mysql会被安装到默认位置
其中比较重要的mysqld 文件在/usr/bin中
- 或者使用
sudo whereis
查找
sudo whereis mysqld
- 初始化
mysqld --initialize --console
- 设置权限
chown -R mysql:mysql /var/lib/mysql/
- 启动mysqld服务
systemctl start mysqld
- 检查是否启动(如果有端口号,就代表启动了)
pidof mysqld
- 修改mysql默认配置文件
vim /etc/my.cnf
输入以下内容,保存后退出(:wq)(注意原来的配置不要变,加上新的就行了)
[mysqld]
character-set-server=utf8mb4
bind-address=0.0.0.0
port=3306
default-storage-engine=INNODB
# 设置跳过密码
skip-grant-tables
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
- 重新启动mysql服务
systemctl restart mysqld
- 免密码登录
mysql -u=root
效果:
- 修改密码
# 在mysql中:
use mysql; # 使用mysql
flush privileges; # 刷新权限
alter user 'root'@'localhost' identified by '123456'; # 修改密码
-
修改密码后,注释掉前面配置文件的skip-grant-tables
-
重新启动mysql
systemctl restart mysqld
- 再次登录
mysql -u root -p #(不要用之前的命令)
登录成功!