环境准备与说明
在正式安装MySQL之前,有几个关键环节需要提前掌握,否则后续操作很容易遇到问题。

说明:
- 在安装与卸载过程中,建议全程使用root账户执行操作。安装完成后,普通用户也可以正常访问MySQL数据库。
- 对于初学者,建议先不要急于配置用户权限,统一使用root账号来练习基本的SQL语句。待学习用户管理后,再创建普通用户进行精细化权限控制。
卸载不要的环境
在安装MySQL之前,务必检查系统中是否存在MariaDB或旧版MySQL,若有则需彻底卸载,防止端口占用和冲突。
检查 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
停止 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
检查系统安装包
#[JL@VM-0-3-centos ~]$ rpm -qa | grep mysql sql# 示例:以下为查询到的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
卸载默认安装包
# 卸载已安装的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
获取并安装 MySQL 官方 YUM 源
获取官方 YUM 源
官方源地址: https://repo.mysql.com/
注意事项:
- 建议选择与操作系统版本相匹配的MySQL发行版,以避免兼容性问题。
- 查看自己的系统版本:
cat /etc/redhat-release - 可进入 https://repo.mysql.com/,查找与系统版本一致的资源,下载后上传至Linux服务器。
# 查看系统版本 [root@VM-0-2-centos ~]# cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core)
安装 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 YUM源安装命令 [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
验证 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
安装 MySQL 服务
执行安装命令
[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 # 服务器
... # 安装了服务和客户端
注意: 若安装过程出现异常,可查阅文末的【常见问题及解答】章节获取解决方案。
查看配置文件和数据存储位置
[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
启动 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 ===
查看启动状态
[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
登录 MySQL(三种方法)
方法一:使用临时密码登录
# 获取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默认密码为空,可以尝试直接回车登录 [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 退出数据库。
设置开机自启(可选)
# 设置MySQL开机自启动 systemctl enable mysqld systemctl daemon-reload
配置 my.cnf 文件
查看并修改配置文
#配置my.cnf文件,主要调整客户端和服务器的字符编码 [JL@VM-0-3-centos 9.9]$entos 9.9]$ cat /etc/my.cnf # For advice on how to change settings please see # https://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
重启服务并验证
# 修改完mysql配置之后需要重启一下mysqld systemctl restart mysqld # 使用netstat -nltp命令可以查看配置信息 netstat -nltp # 使用quit命令退出m # 使用mysql -uJL -p 登录mysql -p 登录mysql mysql -uroot -p
常见问题
问题一:MySQL配置UTF-8编码后仍无法输入中文
原因: 终端环境变量LANG未设置为中文。
解决方案: 检查并设置终端LANG环境变量。
[JL@VM-0-3-centos ~]$ env |grep LANG LANG=en_US
问题二:安装过程中提示GPG密钥过期错误
错误信息:
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
小总结
本文全面梳理了在CentOS 7系统上完整安装MySQL 5.7的详细步骤,涵盖环境清理、YUM源配置、服务安装、启动登录以及配置文件优化等关键环节,每一步均附有实际命令与输出示例。掌握此流程,可快速完成MySQL数据库的部署与初始化。
常见问题及解答
问题 1:如何查看 MySQL 是否安装成功?
解答:
可以通过以下几种方式验证:
- 查看 MySQL 进程:
ps axj | grep mysqld - 查看 MySQL 版本:
mysql --version - 尝试登录:
mysql -uroot -p - 查看服务状态:
systemctl status mysqld
问题 2:MySQL 的默认配置文件在哪里?主要包含哪些配置项?
解答:
MySQL 的默认配置文件是 /etc/my.cnf。主要配置项包括:
port:MySQL 服务端口号,默认为 3306datadir:数据存储目录,默认为/var/lib/mysqlsocket:Socket 文件路径character-set-server:服务器字符集编码default-storage-engine:默认存储引擎,推荐 InnoDBlog-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 源的原因:
- CentOS 默认的 YUM 源中不包含 MySQL,只包含 MariaDB
- 使用官方 YUM 源可以确保安装到最新稳定版本的 MySQL
- 方便后续的更新和维护
- 自动处理依赖关系,避免手动安装带来的兼容性问题
问题 5:MySQL 安装过程中遇到 GPG 密钥过期怎么办?
解答:
GPG 密钥用于验证软件包的完整性和来源可信度。当密钥过期时,可以通过以下命令导入最新的密钥:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
这条命令会从 MySQL 官方仓库下载并导入最新的 GPG 密钥,之后就可以正常安装或更新 MySQL 了。
