MySQL在CentOS 7环境下的完整安装与配置指南

 更新时间:2026年07月13日 09:24:04   作者:时间的拾荒人  
还在为在CentOS7上安装MySQL而头疼吗,本文手把手带你从环境清理、YUM源配置到服务启动,完整安装MySQL5.7,并附有常见问题解答,无论你是新手还是老手,都能轻松搞定MySQL安装和配置文件优化,需要的朋友可以参考下

1. 环境准备与说明

在开始安装 MySQL 之前,有几个重要的前提需要明确:

说明:

  • 安装与卸载过程中,请全程使用 root 用户操作。一旦安装完成,普通用户也可以正常使用 MySQL。
  • 在初期练习阶段,建议先不进行用户管理,统一使用 root 用户操作,以便尽快熟悉 MySQL 的基本语句。待后续学习了用户管理相关内容后,再考虑创建普通用户。

2. 卸载不要的环境

在安装 MySQL 之前,需要先检查系统中是否已经存在 MariaDB 或旧版本的 MySQL,如果有,需要先将其卸载,避免端口冲突。

2.1 检查 MariaDB 进程

[JL@VM-0-3-centos ~]$~]$ ps ajx |grep mariadb   # 先检查是否有mariadb存在
13134 14844 14843 13134 pts/0    14843 S+    1005   0:00 grep --color=auto mariadb
19010 19187 19010 19010 ?           -1 Sl      27  16:55 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock

2.2 停止 MariaDB 服务

[JL@VM-0-3-centos ~]$ systemctl stop mariadb.service  # 停止mariadb服务
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password: 
==== AUTHENTICATION COMPLETE ===
[JL@VM-0-3-centos ~]$ ps axj |grep mariadb   # 停止完成
13134 14976 14975 13134 pts/0    14975 S+    1005   0:00 grep --color=auto mariadb

2.3 检查系统安装包

#[JL@VM-0-3-centos ~]$ rpm -qa | grep mysqlsql
# 下面是打印出来的mysql的样例
[root@bite-alicloud mysql]# rpm -qa | grep mysql
mysql-community-common-5.7.41-1.el7.x86_64
mysql-community-server-5.7.41-1.el7.x86_64
mysql57-community-release-el7-11.noarch
mysql-community-client-5.7.41-1.el7.x86_64
mysql-community-libs-5.7.41-1.el7.x86_64

2.4 卸载默认安装包

# 卸载显示出来的mariadb/mysql安[JL@VM-0-3-centos ~]$ sudo yum remove mariadbadb  # 试着将上面的包一个一个卸载
备份/etc/my.cnf,备份/var/lib/mysql数据
# 批量删除系统自带的mysql安装包
rpm -qa | grep mysql | xargs yum -y remove

3. 获取并安装 MySQL 官方 YUM 源

3.1 获取官方 YUM 源

官方源地址: http://repo.mysql.com/

注意事项:

  • 最好安装和自己系统版本一致的 MySQL,否则可能会存在软件兼容性问题。
  • 查看自己的系统版本:cat /etc/redhat-release
  • 可以进入 http://repo.mysql.com/,找一下和自己版本一致的资源,下载到本地后上传到 Linux 服务器。
# 查看系统版本
[root@VM-0-2-centos ~]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)

3.2 安装 YUM 源并对比前后变化

# 安装前查看本地yum源
[JM@VM-0-3-centos 9.9]$ ls
mysql57-community-release-el7-10.noarch.rpm
[JL@VM-0-3-centos 9.9]$ ls /etc/yum.repos.d/ -al
total 88
drwxr-xr-x.   2 root root  4096 Apr  9 15:43 .
drwxr-xr-x. 106 root root 12288 Apr 12 10:50 ..
-rw-r--r--    1 root root  2523 Dec 26 19:31 Centos-Base.repo
-rw-r--r--    1 root root   614 Nov 10 18:42 CentOS-Base.repo_bak
-rw-r--r--    1 root root  2523 Jun 16  2018 CentOS-Base.repo.bak
-rw-r--r--    1 root root  1309 Apr  8  2020 CentOS-CR.repo
-rw-r--r--    1 root root   649 Apr  8  2020 CentOS-Debuginfo.repo
-rw-r--r--    1 root root   230 Nov 10 18:42 CentOS-Epel.repo
-rw-r--r--    1 root root   314 Apr  8  2020 CentOS-fasttrack.repo
-rw-r--r--    1 root root   630 Apr  8  2020 CentOS-Media.repo
-rw-r--r--    1 root root   998 Dec 11  2018 CentOS-SCLo-scl.repo
-rw-r--r--    1 root root   971 Oct 29  2018 CentOS-SCLo-scl-rh.repo
-rw-r--r--    1 root root  1331 Apr  8  2020 CentOS-Sources.repo
-rw-r--r--    1 root root  7577 Apr  8  2020 CentOS-Vault.repo
-rw-r--r--    1 root root   616 Apr  8  2020 CentOS-x86_64-kernel.repo
-rw-r--r--    1 root root  1919 Apr  8 23:57 docker-ce.repo
-rw-r--r--    1 root root  1050 Nov  1 04:33 epel.repo
-rw-r--r--    1 root root  1149 Nov  1 04:33 epel-testing.repo
-rw-r--r--    1 root root   173 Dec  9 16:08 google-chrome.repo
# 安装MySQL 
[JL@VM-0-3-centos 9.9]$ rpm -Uvh mysql57-community-release-el7-10.noarch.rpmh.rpm 
warning: mysql57-community-release-el7-10.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: can't create transaction lock on /var/lib/rpm/.rpm.lock (Permission denied)
# 如果上面出错了,使用
[JL@VM-0-3-centos 9.9]$ sudo rpm -Uvh mysql57-community-release-el7-10.noarch.rpmh.[sudo] password for JL: whb: 
warning: mysql57-community-release-el7-10.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql57-community-release-el7-10 ################################# [100%]
# 安装后查看,多了mysql相关的yum源
[JL@VM-0-3-centos 9.9]$ ls /etc/yum.repos.d/ -al
total 96
drwxr-xr-x.   2 root root  4096 Apr 12 11:04 .
drwxr-xr-x. 106 root root 12288 Apr 12 10:50 ..
-rw-r--r--    1 root root  2523 Dec 26 19:31 Centos-Base.repo
-rw-r--r--    1 root root   614 Nov 10 18:42 CentOS-Base.repo_bak
-rw-r--r--    1 root root  2523 Jun 16  2018 CentOS-Base.repo.bak
-rw-r--r--    1 root root  1309 Apr  8  2020 CentOS-CR.repo
-rw-r--r--    1 root root   649 Apr  8  2020 CentOS-Debuginfo.repo
-rw-r--r--    1 root root   230 Nov 10 18:42 CentOS-Epel.repo
-rw-r--r--    1 root root   314 Apr  8  2020 CentOS-fasttrack.repo
-rw-r--r--    1 root root   630 Apr  8  2020 CentOS-Media.repo
-rw-r--r--    1 root root   998 Dec 11  2018 CentOS-SCLo-scl.repo
-rw-r--r--    1 root root   971 Oct 29  2018 CentOS-SCLo-scl-rh.repo
-rw-r--r--    1 root root  1331 Apr  8  2020 CentOS-Sources.repo
-rw-r--r--    1 root root  7577 Apr  8  2020 CentOS-Vault.repo
-rw-r--r--    1 root root   616 Apr  8  2020 CentOS-x86_64-kernel.repo
-rw-r--r--    1 root root  1919 Apr  8 23:57 docker-ce.repo
-rw-r--r--    1 root root  1050 Nov  1 04:33 epel.repo
-rw-r--r--    1 root root  1149 Nov  1 04:33 epel-testing.repo
-rw-r--r--    1 root root   173 Dec  9 16:08 google-chrome.repo
-rw-r--r--    1 root root  1627 Apr  5  2017 mysql-community.repo     # 安装了mysql yum源
-rw-r--r--    1 root root  1663 Apr  5  2017 mysql-community-source.repo 

3.3 验证 YUM 源是否正常工作

[JL@VM-0-3-centos 9.9]$9.9]$ yum list |grep mysql
Repository epel is listed more than once in the configuration
mysql57-community-release.noarch           el7-10                 installed
akonadi-mysql.x86_64                       1.9.2-4.el7            base         
anope-mysql.x86_64                         2.0.9-3.el7            epel         
apr-util-mysql.x86_64                      1.5.2-6.el7            base         
calligra-kexi-driver-mysql.x86_64          2.9.10-2.el7           epel         
collectd-mysql.x86_64                      5.8.1-1.el7            epel         
dmlite-plugins-mysql.x86_64                1.14.2-1.el7           epel         
dovecot-mysql.x86_64                       1:2.2.36-8.el7         base   

4. 安装 MySQL 服务

4.1 执行安装命令

[JL@VM-0-3-centos 9.9]$ sudo yum install -y mysql-community-server
[spassword for JL: whb: 
Loaded plugins: aliases, auto-update-debuginfo, fastestmirror, protectbase
Repository epel is listed more than once in the configuration
...
        Installing : mysql-community-common-5.7.33-1.el7.x86_64     # 公共模块   
        Installing : mysql-community-libs-5.7.33-1.el7.x86_64       # 库
        Installing : mysql-community-client-5.7.33-1.el7.x86_64     # 客户端
        Installing : mysql-community-server-5.7.33-1.el7.x86_64     # 服务器
... # 安装了服务和客户端

注意: 如果安装过程中报错了,请参考本文最后的【常见问题及解答】章节。

5. 查看配置文件和数据存储位置

[JL@VM-0-3-centos 9.9]$ ls /etc/my.cnf
/etc/my.cnf
[JL@VM-0-3-centos 9.9]$ sudo ls /var/lib/mysql
....
  • 配置文件路径: /etc/my.cnf
  • 数据存储路径: /var/lib/mysql

6. 启动 MySQL 服务

`[JL@VM-0-3-centos 9.9]$s 9.9]$ systemctl start mysqld.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password: 
==== AUTHENTICATION COMPLETE ===

7. 查看启动状态

[JL@VM-0-3-centos 9.9]$ ps axj |grep mysqld
    1 23183 23182 23182 ?           -1 Sl      27   0:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
13134 23243 23242 13134 pts/0    23242 S+    1005   0:00 grep --color=auto mysqld

8. 登录 MySQL(三种方法)

方法一:使用临时密码登录

# 获取临时密码
[JL@VM-0-3-centos 9.9]$ sudo grep 'temporary password' /var/log/mysqld.logsqld.log 
2021-04-12T03:23:46.153263Z 1 [Note] A temporary password is generated for root@localhost: yLMalT:v+5l*
# 密码不回显,正常输入即可
[JL@VM-0-3-centos 9.9]$ mysql -uroot -puroot -p
Enter password: 
# 判断修改密码时候新密码是否符合当前的策略,不满足报错,不让修改,关闭它
# 安全强度,默认为中,即1,要求必须包含 数字、符号、大小写字母,长度至少为8位
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
# 密码最小长度
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
# 修改本地登录密码,暂不授权远程登录
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'qwer@wu.888';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

方法二:直接登录(适用于最新版 MySQL)

# 如果你安装的最新的mysql,没有所谓的临时密码,root默认没有密码
# 试着直接连接cli
[JL@VM-0-3-centos 9.9]$os 9.9]$ mysql -uroot -p
Enter password: (直接回车)

方法三:跳过权限表登录(终极方案)

[root@bite-alicloud mysql]# vim /etc/my.cnf    # 打开mysql配置文件
# 在[mysqld]最后加一行配置: skip-grant-tables 选项, 并保存退出
[root@bite-alicloud mysql]# systemctl restart mysqld  # 重启mysql服务
# 登陆成功
[root@bite-alicloud mysql]# mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.41 MySQL Community Server (GPL)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> 

提示: 使用命令 mysql -uroot -p 启动 mysql,使用 quit 退出数据库。

9. 设置开机自启(可选)

# 开启开机自启动
systemctl enable mysqld
systemctl daemon-reload

10. 配置 my.cnf 文件

10.1 查看并修改配置文

#配置⼀下my.conf,主要是数据库客⼾端和服务器的编码格式
[JL@VM-0-3-centos 9.9]$entos 9.9]$ cat /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysql]
#default-character-set=utf8 ,暂不设置,mysql有bug,汉字不回显
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 添加以下配置
character-set-server=utf8
default-storage-engine=innodb

10.2 重启服务并验证

# 修改完mysql配置之后需要重启一下mysqld
systemctl restart mysqld

# 使用netstat -nltp命令可以查看配置信息
netstat -nltp

# 使用quit命令退出m# 使用mysql -uJL -p 登录mysql -p 登录mysql
mysql -uroot -p

11. 常见问题

问题一:MySQL 已配置 UTF-8 编码,但无法输入中文

原因: 终端环境变量问题。

解决方案: 确保在终端命令行中可以输入中文。

[JL@VM-0-3-centos ~]$ env |grep LANG
LANG=en_US

问题二:安装遇到秘钥过期的问题安装遇到秘钥过期的问题

错误信息:

Failing package is: mysql-community-client-5.7.39-1.el7.x86_64
 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

解决方案: 导入最新的 MySQL GPG 密钥。

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

12. 小总结

本文详细记录了在 CentOS 7 环境下完整安装 MySQL 5.7 的全过程,从环境清理、YUM 源配置、服务安装、启动登录到配置文件优化,每一步都配有完整的命令和输出示例。掌握这套流程,不仅能在实际工作中快速部署 MySQL 环境。

13. 常见问题及解答

问题 1:如何查看 MySQL 是否安装成功?

解答:
可以通过以下几种方式验证:

  1. 查看 MySQL 进程:ps axj | grep mysqld
  2. 查看 MySQL 版本:mysql --version
  3. 尝试登录:mysql -uroot -p
  4. 查看服务状态:systemctl status mysqld

问题 2:MySQL 的默认配置文件在哪里?主要包含哪些配置项?

解答:
MySQL 的默认配置文件是 /etc/my.cnf。主要配置项包括:

  • port:MySQL 服务端口号,默认为 3306
  • datadir:数据存储目录,默认为 /var/lib/mysql
  • socket:Socket 文件路径
  • character-set-server:服务器字符集编码
  • default-storage-engine:默认存储引擎,推荐 InnoDB
  • log-error:错误日志文件路径
  • pid-file:进程 ID 文件路径e`:进程 ID 文件路径

问题 3:MySQL 安装后如何修改 root 密码?

解答:

-- 1. 使用临时密码登录后修改
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
-- 2. 如果忘记密码,可以通过跳过权限表的方式重置
-- 在 /etc/my.cnf 的 [mysqld] 下添加 skip-grant-tables
-- 重启 MySQL 后无需密码登录
-- 执行以下 SQL 修改密码
UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;
-- 最后删除 skip-grant-tables 配置并重启 MySQL

问题 4:什么是 YUM 源?为什么安装 MySQL 需要先配置 YUM 源?

解答:
YUM(Yellowdog Updater Modified)是 Linux 系统上的包管理工具,YUM 源就是软件包的仓库地址。配置 YUM 源后,系统可以从指定的仓库自动下载并安装软件包,同时自动解决依赖关系。

安装 MySQL 需要先配置官方 YUM 源的原因:

  1. CentOS 默认的 YUM 源中不包含 MySQL,只包含 MariaDB
  2. 使用官方 YUM 源可以确保安装到最新稳定版本的 MySQL
  3. 方便后续的更新和维护
  4. 自动处理依赖关系,避免手动安装带来的兼容性问题

问题 5:MySQL 安装过程中遇到 GPG 密钥过期怎么办?

解答:
GPG 密钥用于验证软件包的完整性和来源可信度。当密钥过期时,可以通过以下命令导入最新的密钥:

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

这条命令会从 MySQL 官方仓库下载并导入最新的 GPG 密钥,之后就可以正常安装或更新 MySQL 了。

以上就是MySQL在CentOS 7环境下的完整安装与配置指南的详细内容,更多关于MySQL在CentOS 7下安装与配置的资料请关注脚本之家其它相关文章!

相关文章

  • 手把手教你Navicat如何导出Excel格式的表结构

    手把手教你Navicat如何导出Excel格式的表结构

    我们在开发中使用数据库时往往需要做一些备份之类的,或者需要导出下表结构导入到其他数据库等,下面这篇文章主要给大家介绍了关于Navicat如何导出Excel格式的表结构的相关资料,需要的朋友可以参考下
    2023-04-04
  • 利用MySQL空间函数实现位置打卡的完整步骤

    利用MySQL空间函数实现位置打卡的完整步骤

    这篇文章主要给大家介绍了关于如何利用MySQL空间函数实现位置打卡的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • MySQL中的datediff()方法和timestampdiff()方法的应用示例小结

    MySQL中的datediff()方法和timestampdiff()方法的应用示例小结

    在MySQL中,DATEDIFF()函数和TIMESTAMPDIFF()函数用于计算日期和时间之间的差异,TIMESTAMPDIFF()函数返回的结果是整数,但你可以通过在计算过程中使用适当的除法来获得所需的小数部分,本文介绍MySQL中的datediff()方法和timestampdiff()方法的应用,感兴趣的朋友一起看看吧
    2023-12-12
  • Mysql中的concat函数(拼接函数)详解

    Mysql中的concat函数(拼接函数)详解

    很多时候,我们需要将不同地方获得的字符串拼接在一起,此时就需要使用CONCAT和CONCAT_WS函数,这篇文章主要介绍了Mysql中的concat函数(拼接函数),需要的朋友可以参考下
    2023-02-02
  • MYSQL 删除一个字段前判断字段是否存在的办法

    MYSQL 删除一个字段前判断字段是否存在的办法

    这篇文章主要介绍了MYSQL 删除一个字段前判断字段是否存在的办法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-08-08
  • MySQL如何防止SQL注入并过滤SQL中注入的字符

    MySQL如何防止SQL注入并过滤SQL中注入的字符

    SQL注入是指在输入参数中添加一些特殊字符(例如单引号),使输入的语句成为一段单独的可执行的SQL语句,这篇文章主要给大家介绍了关于MySQL如何防止SQL注入并过滤SQL中注入字符的相关资料,需要的朋友可以参考下
    2024-02-02
  • 一台电脑(windows系统)安装两个版本MYSQL方法步骤

    一台电脑(windows系统)安装两个版本MYSQL方法步骤

    由于新旧项目数据库版本差距太大,编码格式不同,引擎也不同,所以只好装两个数据库,这篇文章主要给大家介绍了关于一台电脑(windows系统)安装两个版本MYSQL的方法步骤,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • mysql增加新用户无法登陆解决方法

    mysql增加新用户无法登陆解决方法

    在使用mysql增加新用户之后,发现新增的用户无法登陆,一时束手无策,网上搜集整理了一下,晒出来和大家分享一下,希望可以帮助你们
    2012-11-11
  • MySQL使用MyFlash快速恢复误删除和修改的数据

    MySQL使用MyFlash快速恢复误删除和修改的数据

    MyFlash 是由美团点评公司技术工程部开发并维护的一个开源工具,主要用于MySQL数据库的DML操作的回滚,MyFlash的优势在于它提供了更多的过滤选项,使得回滚操作变得更加容易,本文将实验通过 MyFlash 工具快速恢复误删除 或 误修改的数据,需要的朋友可以参考下
    2024-06-06
  • mysql 5.7.15 安装配置方法图文教程

    mysql 5.7.15 安装配置方法图文教程

    这篇文章主要为大家分享了mysql 5.7.15安装配置方法图文教程,感兴趣的朋友可以参考一下
    2016-09-09

最新评论