基于Linux的CentOS 7 下载安装 MySQL 8的全教程

文章目录

  • 前言
  • 一、安装MySQL的准备工作
    • [1.1 卸载 MariaDB](#1.1 卸载 MariaDB)
      • [1.1.1 什么是MariaDB](#1.1.1 什么是MariaDB)
      • [1.1.2 卸载](#1.1.2 卸载)
    • [1.2 下载资源包](#1.2 下载资源包)
    • [1.3 检查旧版本MySQL](#1.3 检查旧版本MySQL)
    • [1.4 解压安装](#1.4 解压安装)
  • 二、配置工作
    • [2.1 基本配置](#2.1 基本配置)
      • [2.1.1 文件夹重命名](#2.1.1 文件夹重命名)
      • [2.1.2 PATH变量](#2.1.2 PATH变量)
      • [2.1.3 确认安装](#2.1.3 确认安装)
    • [2.2 创建用户组、用户](#2.2 创建用户组、用户)
    • [2.3 创建数据目录](#2.3 创建数据目录)
  • 三、MySQL的初始化以及启动
    • [3.1 配置文件](#3.1 配置文件)
    • [3.2 初始化](#3.2 初始化)
    • [3.3 启动MySQL](#3.3 启动MySQL)
      • [3.3.1 启动服务](#3.3.1 启动服务)
      • [3.3.2 登录](#3.3.2 登录)
    • [3.4 修改密码](#3.4 修改密码)
      • [3.4.1 首次修改](#3.4.1 首次修改)
      • [3.4.2 平时修改](#3.4.2 平时修改)
    • [3.5 退出、关闭服务](#3.5 退出、关闭服务)
  • 结语

前言

Linux环境部署是开发者的基本功,数据库安装往往是第一道坎。本文以CentOS 7为环境,记录从卸载MariaDB、解决仓库失效,到MySQL 8安装、初始化配置与密码修改的完整过程。这不仅是一份安装指南,更是一次对Linux系统与数据库底层逻辑的入门实践。

一、安装MySQL的准备工作

1.1 卸载 MariaDB

1.1.1 什么是MariaDB

1.1.2 卸载

第一步:先查看版本,检查是否之前有下载过,有则需要卸载

shell 复制代码
rpm -qa | grep mariadb

第二步:卸载,复制执行了刚才上述代码的语句显示的文件名到下列指令的的文件名处

shell 复制代码
rpm -e --nodeps 文件名

检查确认卸载

shell 复制代码
rpm -qa | grep mariadb

1.2 下载资源包

进入到usr/local目录之下:

shell 复制代码
cd /usr/local

1.2.1 MySQL下载的两种方式:

方式一:官网下载
  1. 官网下载:MySQL Community Downloads Link
  1. 将下载的MySQL上传到服务器的/usr/local目录下

    确保当前所在的是在/usr/local目录下,在MobaXterm中的上传上传至当前目录,然后再找到你刚才下载的MySQL压缩文件,等待上传成功之后即可在当前目录下看到下载的文件。

方式二:wget下载
  1. wget指令:还是要在/usr/local目录下执行该指令,下载资源包

    shell 复制代码
    wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

    如是显示的是如下图这样的样式,则可以尝试一下执行以下的指令:

    shell 复制代码
    yum install wget

    如果执行了这个该指令之后在还是显示的是:

出现这个错误是因为使用的 CentOS 7 仓库已经被归档,当前的镜像地址无法找到所需的文件。若是没有出现这样的问题就可以省略接下的内容,可以直接跳转到1.3 检查旧版本MySQL接着操作。

解决方法:

进入/etc/yum.repos.d,在该目录下找到 CentOS-Base.repo

之后依次执行下列指令:

shell 复制代码
cp  CentOS-Base.repo   CentOS-Base.repo.backup
shell 复制代码
vi CentOS-Base.repo

执行这两个指令是为了防止待会修改CentOS-Base.repo中的内容时修改出错,cp是为了备份一份。

进到CentOS-Base.repo之后,将其中的内容全部代替为下列的内容:

shell 复制代码
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#
 
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
#baseurl=http://vault.centos.org/7.9.2009/x86_64/os/
baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#released updates 
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
#baseurl=http://vault.centos.org/7.9.2009/x86_64/os/
baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#$baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
#baseurl=http://vault.centos.org/7.9.2009/x86_64/os/
baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
#baseurl=http://vault.centos.org/7.9.2009/x86_64/os/
baseurl=http://vault.centos.org/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

然后wq!保存退出,之后再执行下列的指令:

shell 复制代码
sudo yum clean all
shell 复制代码
sudo yum makecache

之后再等待加载:

加载完成之后就可以处理阿里云镜像源的问题了,执行下面的指令:

shell 复制代码
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

执行完成之后在进入到/etc/yum.repos.d,然后执行:

shell 复制代码
cat CentOS-Base.repo

若是显示的是阿里云的镜像即可:

然后再执行接下来的语句即可:

shell 复制代码
yum install wget

y

y

1.3 检查旧版本MySQL

执行指令:

shell 复制代码
rpm -qa | grep mysql
  • 若没有输出,则说明当前系统没有安装MySQL,接下来开始安装。

  • 有输出显示的不是MySQL想要的版本,则卸载。

    • 停止服务
    shell 复制代码
    systemctl stop mysqld
    • 卸载

      shell 复制代码
      rpm -e --nodeps mysql 文件名

1.4 解压安装

特别注意:要在/usr/local的目录下去解压该指令,否则会报错

  1. 解压指令:tar指令

    若是下载的文件名是.tar.gz后缀

    则使用以下指令:

    shell 复制代码
    tar -zxvf 文件名

    若是下载的文件名是.tar.xz后缀

    则使用以下的指令:

    shell 复制代码
    tar -Jxvf 文件名
  2. 解压完成之后在/usr/local下会生成MySQL文件夹:

特别注意:要将MySQL安装在/usr/local下,若没有安装在该目录下,则要通过mv指令移动到该目录下。

二、配置工作

2.1 基本配置

2.1.1 文件夹重命名

重命名MySQL文件夹,通常命名为mysql版本号

2.1.2 PATH变量

添加PATH变量之后,可在全局中使用MySQL,执行下列指令:
特别注意:要确定自己当前的mysql的文件位置是在该目录下,若不在,可以修改我下列中的路径。

shell 复制代码
export PATH=$PATH:/usr/local/mysql8/bin

2.1.3 确认安装

查看版本

执行下列指令:

shell 复制代码
mysql --version

2.2 创建用户组、用户

进入到/usr/local

创建用户组 :groupadd

shell 复制代码
groupadd mysql

创建用户useradd

shell 复制代码
useradd -r -g mysql mysql

2.3 创建数据目录

创建目录

mysql8中创建一个data的目录用来存储以后数据。

三、MySQL的初始化以及启动

3.1 配置文件

/usr/local/etc/ 下创建 my.cnf 配置文件,用于初始化 MySQL 数据库

注意要在usr/local/etc下创建my.cnf 配置文件

shell 复制代码
touch my.cnf

使用Vim 编辑器进行编辑

shell 复制代码
vi my.cnf

进入之后再讲下列的配置内容粘贴到其中:

shell 复制代码
[mysql]
# 默认字符集
default-character-set=utf8mb4
[client]
port       = 3306
socket     = /tmp/mysql.sock
[mysqld]
port       = 3306
server-id  = 3306
user       = mysql
socket     = /tmp/mysql.sock
# 安装目录
basedir    = /usr/local/mysql8
# 数据存放目录
datadir    = /data/mysql8_data/mysql
log-bin    = /data/mysql8_data/mysql/mysql-bin
innodb_data_home_dir      =/data/mysql8_data/mysql
innodb_log_group_home_dir =/data/mysql8_data/mysql
# 日志及进程数据的存放目录
log-error =/data/mysql8_data/mysql/mysql.log
pid-file  =/data/mysql8_data/mysql/mysql.pid
# 服务端字符集
character-set-server=utf8mb4
lower_case_table_names=1
autocommit =1
##### 以上涉及文件夹明,注意修改
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128
#query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
binlog_format=mixed
binlog_expire_logs_seconds =864000
# 创建表时使用的默认存储引擎
default_storage_engine = InnoDB
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout

若是这些的你创建的路径与我不符的可以修改这几处:

3.2 初始化

进入到/usr/local/mysql/bin目录下,执行下列的命令:

shell 复制代码
mysqld --defaults-file=/usr/local/etc/my.cnf --basedir=/usr/local/mysql8 --datadir=/data/mysql8_data/mysql --user=mysql --initialize-insecure

同样若创建的文件路径不符可以修改文件路径。

3.3 启动MySQL

查看MySQL 的 /bin 下是否包含 mysqld_safe,用于后台安全启动 MySQL

3.3.1 启动服务

  1. 安全后台启动MySQL
shell 复制代码
mysqld_safe --defaults-file=/usr/local/etc/my.cnf &
  1. 确认安全

    shell 复制代码
    ps -ef | grep mysql

3.3.2 登录

若以 --initialize-insecure 初始化,首次登录时跳过密码。

shell 复制代码
mysql -u root --skip-password

3.4 修改密码

3.4.1 首次修改

MySQL 初始化的 root 用户、新创建的用户,都需要设置首次密码。使用本地密码插件 mysql_native_password

shell 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

再刷新权限:

shel 复制代码
FLUSH PRIVILEGES;

3.4.2 平时修改

  1. Linux命令行

    shell 复制代码
    mysqladmin -u用户名 -p旧密码 password 新密码
  2. MySQL命令行

    设置密码

shell 复制代码
SET PASSWORD FOR '用户名'@'主机' = PASSWORD('密码');

刷新权限

shell 复制代码
FLUSH PRIVILEGES;

3.5 退出、关闭服务

在 MySQL 命令行中执行,若在 Linux 命令行中,会退出/关闭 Linux 服务器。

  1. 退出MySQL(命令行):

    shell 复制代码
    quit;
    exit;
  2. 关闭 MySQL 服务:

    shell 复制代码
    shutdown;

结语

从解决仓库失效的报错到成功登录MySQL命令行,每一步都在加深对Linux权限、服务管理与数据库初始化逻辑的理解。掌握环境搭建只是开始,真正重要的是在排错中积累的工程思维与动手能力。

相关推荐
WangLanguager2 小时前
Unix 命令 rm详细介绍
linux·服务器·unix
鱼听禅2 小时前
CentOS Stream 10系统配置戴尔R730风扇速度
linux·运维·centos
IMPYLH2 小时前
Linux 的 unlink 命令
linux·运维·服务器·bash
C137的本贾尼2 小时前
MySQL 安装指南:Windows/Linux 及绿色版实战
mysql
vortex52 小时前
Shellinabox 使用指南:基于 Web 的终端模拟器
linux·前端·web ssh
kyle~2 小时前
机器人感知---工业相机硬触发、时间戳同步( PTP)与 ROS2 驱动时间戳设计
linux·c++·机器人·ros2
小则又沐风a2 小时前
深入理解进程概念 第三章 进程调度切换
java·linux·服务器·前端
z202305082 小时前
RDMA之路由算法介绍 (6)
linux·服务器·网络·人工智能·ai
楼兰公子2 小时前
# RK3588 Linux 驱动开发完整学习指南RK3588_Linux_Driver_Development.md
linux·驱动开发