在 CentOS 中安装 MySQL 的过程与问题解决方案

MySQL 是一款广泛使用的开源关系型数据库管理系统,在 CentOS 系统中安装 MySQL 是很多开发者和运维人员常做的工作。下面将详细介绍安装过程以及可能遇到的问题和解决方案。

一、安装前的准备工作

在安装 MySQL 之前,需要做好一些准备工作,以确保安装过程顺利进行。

  • 检查系统版本:确认 CentOS 的版本,不同版本在安装 MySQL 时可能会有一些差异。可以使用 cat /etc/centos-release 命令查看系统版本。
  • 更新系统:运行 yum -y update 命令更新系统软件包,保证系统处于最新状态,减少兼容性问题。
  • 检查是否已安装 MySQL 相关软件:使用 rpm -qa | grep mysql 命令查看,如果有安装则使用 rpm -e --nodeps 软件名命令卸载,避免冲突。

二、MySQL 的安装过程

(一)选择安装方式

MySQL 在 CentOS 上有多种安装方式,常用的有通过 yum 源安装和源码编译安装。这里推荐使用 yum 源安装,操作相对简单。

(二)添加 MySQL yum 源

  • 安装 rpm 包:运行 rpm -ivh mysql80-community-release-el7-3.noarch.rpm ,安装完成后会在/etc/yum.repos.d/目录下生成相关的 yum 源配置文件。

(三)选择 MySQL 版本

如果需要安装特定版本的 MySQL,可以修改 yum 源配置文件。例如,对于 MySQL 5.7,编辑/etc/yum.repos.d/mysql-community.repo文件,将 MySQL 8.0 的 enabled 设置为 0,将 MySQL 5.7 的 enabled 设置为 1。

(四)安装 MySQL

运行 yum -y install mysql-community-server 命令开始安装 MySQL。安装过程中,yum 会自动处理依赖关系。

三、MySQL 的配置与启动

(一)启动 MySQL 服务

安装完成后,使用systemctl start mysqld命令启动 MySQL 服务。可以通过 systemctl status mysqld 命令查看服务状态,如果显示 "active (running)" 则表示启动成功。

(二)设置开机自启动

为了让 MySQL 在系统重启后自动启动,运行 systemctl enable mysqld 命令。

(三)获取初始密码

MySQL 安装完成后,会生成一个初始密码,存放在/var/log/mysqld.log文件中。可以使用 grep 'temporary password' /var/log/mysqld.log 命令查看初始密码。

(四)登录 MySQL 并修改初始密码

  • 使用初始密码登录 MySQL:mysql -u root -p,然后输入初始密码。
  • 修改密码:登录后,需要立即修改初始密码,否则无法执行其他操作。可以使用ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';命令修改密码。注意,MySQL 对密码有一定要求,通常需要包含大小写字母、数字和特殊字符。

四、可能遇到的问题及解决方案

(一)yum 源安装时提示 "找不到包"

  • 原因:可能是 yum 源配置不正确或者没有启用对应的 MySQL 版本。
  • 解决方案:检查/etc/yum.repos.d/mysql-community.repo文件中对应的 MySQL 版本的 enabled 是否设置为 1,然后运行yum clean all和yum makecache命令刷新 yum 缓存。

(二)启动 MySQL 服务失败

  • 原因:可能是端口被占用、配置文件错误等。
  • 解决方案:
    • 检查端口是否被占用:使用 netstat -tunlp | grep 3306 命令查看 3306 端口是否被占用,如果被占用可以修改 MySQL 配置文件中的端口或者停止占用端口的进程。
    • 查看错误日志:/var/log/mysqld.log文件中会记录启动失败的原因,根据日志信息进行排查。

(三)初始密码无法登录

  • 原因:可能是初始密码获取错误或者密码已过期。
  • 解决方案:
    • 重新获取初始密码:再次运行 grep 'temporary password' /var/log/mysqld.log 命令确认。
    • 如果密码过期,可以修改 MySQL 配置文件/etc/my.cnf,在 [mysqld] 部分添加 skip-grant-tables,然后重启 MySQL 服务systemctl restart mysqld,此时可以无密码登录 MySQL,登录后修改密码,修改完成后删除skip-grant-tables并重启服务。

(四)远程连接 MySQL 失败

  • 原因:默认情况下,MySQL 只允许本地登录,没有开启远程连接权限。
  • 解决方案:
    • 登录 MySQL 后,执行GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;命令授予 root 用户远程连接权限,其中%表示允许所有 IP 连接,也可以指定具体的 IP。
    • 执行FLUSH PRIVILEGES;命令刷新权限。
    • 检查防火墙是否开放 3306 端口:如果使用 firewalld 防火墙,运行firewall-cmd --zone=public --add-port=3306/tcp --permanent命令开放 3306 端口,然后运行firewall-cmd --reload命令重新加载防火墙配置。

通过以上步骤,应该可以在 CentOS 系统中成功安装并配置 MySQL。如果在安装过程中遇到其他问题,可以查阅 MySQL 官方文档或者相关技术论坛寻求帮助。

相关推荐
wdfk_prog几秒前
[Linux]学习笔记系列 -- [fs]filesystems
linux·笔记·学习
fengyehongWorld4 分钟前
Linux tree命令
linux
像名字一样难取的昵称14 分钟前
Linux学习笔记:十八、Linux文件的压缩,解压缩一站式学习
linux·运维·笔记·学习·ubuntu·ssh
少年、潜行19 分钟前
F1C100/200S学习笔记(2)-- 初次FLASH启动(裸机)和SD卡启动(Linux)
linux·笔记·f1c200s
小白勇闯网安圈1 小时前
极简版Linux发行内核
linux
管理大亨1 小时前
Linux vs Windows:五大维度深度对决
linux·arm开发·windows
乘凉~1 小时前
【Linux作业】Limux下的python多线程爬虫程序设计
linux·爬虫·python
Trouvaille ~1 小时前
【Linux】库制作与原理(二):ELF格式与静态链接原理
linux·运维·c语言·操作系统·动静态库·静态链接·elf文件
KingRumn2 小时前
Linux信号之信号安全
linux·算法
ZePingPingZe2 小时前
MySQL-InnoDB锁与事务
数据库·mysql