文章目录
- 前言
- 一、安装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.2.1 MySQL下载的两种方式:](#1.2.1 MySQL下载的两种方式:)
- [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下载的两种方式:
方式一:官网下载

-
将下载的MySQL上传到服务器的
/usr/local目录下确保当前所在的是在
/usr/local目录下,在MobaXterm中的上传上传至当前目录,然后再找到你刚才下载的MySQL压缩文件,等待上传成功之后即可在当前目录下看到下载的文件。
方式二:wget下载
-
wget指令:还是要在
/usr/local目录下执行该指令,下载资源包shellwget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz如是显示的是如下图这样的样式,则可以尝试一下执行以下的指令:
shellyum 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想要的版本,则卸载。
- 停止服务
shellsystemctl stop mysqld-
卸载
shellrpm -e --nodeps mysql 文件名
1.4 解压安装
特别注意:要在/usr/local的目录下去解压该指令,否则会报错
-
解压指令:
tar指令若是下载的文件名是
.tar.gz后缀则使用以下指令:
shelltar -zxvf 文件名若是下载的文件名是
.tar.xz后缀则使用以下的指令:
shelltar -Jxvf 文件名
-
解压完成之后在
/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 启动服务
- 安全后台启动MySQL
shell
mysqld_safe --defaults-file=/usr/local/etc/my.cnf &

-
确认安全
shellps -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 平时修改
-
Linux命令行
shellmysqladmin -u用户名 -p旧密码 password 新密码 -
MySQL命令行
设置密码
shell
SET PASSWORD FOR '用户名'@'主机' = PASSWORD('密码');
刷新权限
shell
FLUSH PRIVILEGES;
3.5 退出、关闭服务
在 MySQL 命令行中执行,若在 Linux 命令行中,会退出/关闭 Linux 服务器。
-
退出MySQL(命令行):
shellquit; exit; -
关闭 MySQL 服务:
shellshutdown;
结语
从解决仓库失效的报错到成功登录MySQL命令行,每一步都在加深对Linux权限、服务管理与数据库初始化逻辑的理解。掌握环境搭建只是开始,真正重要的是在排错中积累的工程思维与动手能力。