在 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 官方文档或者相关技术论坛寻求帮助。

相关推荐
十五年专注C++开发30 分钟前
MySql中各种功能用sql语句实现总结
数据库·sql·mysql
weixin_523185321 小时前
Collections.unmodifiableMap详解:真的不可修改吗?
java·linux·前端
My is 李豆2 小时前
CentOS 7 安装 Docker 完整教程(含 docker-compose 插件)
docker·eureka·centos
ULIi096kr2 小时前
MySQL解决Too many connections报错:连接数爆满排查、优化与永久解决方案
数据库·mysql·adb
凡人叶枫2 小时前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
云栖梦泽2 小时前
玩转RK3506SDK
linux·嵌入式硬件
Java面试题总结3 小时前
Linux-Ubantu-贴士-apt的地盘
linux·运维·服务器
李白的天不白3 小时前
服务器上数据库的创建
mysql
ha_lydms3 小时前
AnalyticDB基本概念
mysql·adb·analyticdb
kong@react3 小时前
Rocky Linux 10.2 全面解析:企业级 CentOS 替代方案及保姆级docker安装
java·linux·运维·docker