centos6.5中rpm包安装mysql5.7初始化出错的解决方法

下面将详细讲解“CentOS 6.5 中 RPM 包安装 MySQL 5.7 初始化出错的解决方法”的完整攻略,包含以下内容:

问题描述

在 CentOS 6.5 中通过 RPM 包安装 MySQL 5.7,执行初始化命令时出现如下错误:

ERROR: Unable to start MySQL server:
mysqld: Can't read dir of '/var/lib/mysql/' (Errcode: 13 - Permission denied)
mysqld: [ERROR] Aborting
mysqld: [Note] /usr/sbin/mysqld: Shutdown complete

解决方法

  1. 创建 MySQL 相关的用户和组
sudo groupadd mysql
sudo useradd -r -g mysql mysql
  1. 为 MySQL 数据目录设置正确的权限
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod 770 /var/lib/mysql
sudo chmod g+s /var/lib/mysql
  1. 修改 SELinux 的 security context
sudo semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?"
sudo semanage fcontext -a -t mysqld_log_t "/var/log/mysql(/.*)?"
sudo semanage fcontext -a -t mysqld_tmp_t "/var/tmp/mysql(/.*)?"
sudo restorecon -Rv /var/lib/mysql
sudo restorecon -Rv /var/log/mysql
sudo restorecon -Rv /var/tmp/mysql
  1. 重新执行初始化命令
sudo mysqld --initialize-insecure
  1. 启动 MySQL 服务
sudo service mysqld start

示例说明

  1. 创建 MySQL 相关的用户和组

在 CentOS 6.5 中,MySQL 数据目录的所属用户和组默认为 mysql。如果系统中没有这个用户和组,则需要手动创建:

sudo groupadd mysql  # 创建 mysql 组
sudo useradd -r -g mysql mysql  # 创建 mysql 用户,-r 表示创建系统用户
  1. 为 MySQL 数据目录设置正确的权限

在 CentOS 6.5 中,MySQL 数据目录默认为 /var/lib/mysql。为了保证 MySQL 对数据目录有完全的访问权限,需要执行如下命令:

sudo chown -R mysql:mysql /var/lib/mysql  # 修改所有者和组为 mysql
sudo chmod 770 /var/lib/mysql  # 修改权限为 770
sudo chmod g+s /var/lib/mysql  # 设置SGID位,新建文件的所属组为 mysql
  1. 修改 SELinux 的 security context

在 CentOS 6.5 中,SELinux 默认开启,为了让 MySQL 对数据目录、日志目录以及临时目录等有完全的访问权限,需要修改相应的 security context:

sudo semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?"  # 添加 MySQL 数据目录的 security context
sudo semanage fcontext -a -t mysqld_log_t "/var/log/mysql(/.*)?"  # 添加 MySQL 日志目录的 security context
sudo semanage fcontext -a -t mysqld_tmp_t "/var/tmp/mysql(/.*)?"  # 添加 MySQL 临时目录的 security context
sudo restorecon -Rv /var/lib/mysql  # 重新设置 MySQL 数据目录的 security context
sudo restorecon -Rv /var/log/mysql  # 重新设置 MySQL 日志目录的 security context
sudo restorecon -Rv /var/tmp/mysql  # 重新设置 MySQL 临时目录的 security context
  1. 重新执行初始化命令

重新执行初始化命令,并加上 --initialize-insecure 参数,跳过密码初始化过程:

sudo mysqld --initialize-insecure
  1. 启动 MySQL 服务

启动 MySQL 服务:

sudo service mysqld start

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:centos6.5中rpm包安装mysql5.7初始化出错的解决方法 - Python技术站

(0)
上一篇 2023年6月20日
下一篇 2023年6月20日

相关文章

  • sed使用删除匹配行

    sed使用删除匹配行 sed是一款Linux操作系统下的文本操作工具,可以用来实现对文本的编辑操作,其中就包括删除匹配的行。本文将介绍如何使用sed命令删除匹配的行。 语法 sed命令的语法结构如下: sed [选项参数] ‘Cmds’ 文件名 其中选项参数可以不用指定,Cmds是一个或多个sed命令,文件名则是待处理的文件名。 删除匹配行 删除匹配行是se…

    其他 2023年3月29日
    00
  • 什么是命令提示符 命令提示符的打开方法

    当我们需要在操作系统中执行一些基本的命令时,可以通过命令提示符控制台来实现。命令提示符为用户提供了一个简单而强大的方式来与计算机交互,同时也很容易进行脚本编写和批量处理等高级操作。 下面是打开命令提示符的方法及示例说明: 命令提示符的打开方法 在Windows系统中 在Windows系统中,命令提示符可以通过以下方式打开: 使用快捷键Win+R,弹出运行窗口…

    other 2023年6月26日
    00
  • 点云数据(pointcloud)详解

    点云数据详解 点云数据(pointcloud)是三维空间中大量点的集合,在计算机视觉和机器学习领域广泛应用。本攻略将详细讲解点云数据的组成、表示、处理及应用。 组成 点云数据通常由三个要素组成:点云坐标、法向量和颜色。 点云坐标表示点在三维空间中的位置,通常用(x, y, z)三维向量表示。 法向量表示每个点相对于其周围点的方向,通常用一个三维向量表示。 颜…

    其他 2023年4月16日
    00
  • php上传功能集后缀名判断和随机命名(强力推荐)

    PHP上传功能集后缀名判断和随机命名攻略 在PHP中,实现上传功能时,通常需要对上传的文件进行后缀名判断和随机命名,以增加安全性和避免文件名冲突。下面是一个完整的攻略,包含了后缀名判断和随机命名的实现。 后缀名判断 获取上传文件的原始文件名和临时文件路径。 使用pathinfo()函数获取文件的后缀名。 使用in_array()函数判断后缀名是否在允许的文件…

    other 2023年8月5日
    00
  • npm下载指定版本的插件

    npm下载指定版本的插件 在项目开发中,我们经常需要使用各种npm插件。但是,有时候我们需要下载特定版本的插件,这时候该怎么办呢?本文介绍如何使用npm下载指定版本的插件。 1. 查看当前可用的版本号 在npm官网或者插件作者的github仓库中,我们可以看到当前可用的版本号。需要注意的是,这只是一个参考,确保你下载的版本是与你的项目兼容的。 2. 安装指定…

    其他 2023年3月28日
    00
  • python3.x实现定时器timer 制作抽象的timer定时器基类

    Python3.x实现定时器timer:制作抽象的timer定时器基类 在Python开发中,需要执行一些定时任务时,就可以用到定时器。Python标准库中提供了一个Threading.Timer()类,可以用于实现简单的定时器功能。但如果需要具有更高的扩展性和可定制性,我们需要自己编写一个定时器的类,来实现我们想要的功能。本文将详细介绍如何用Python3…

    其他 2023年3月28日
    00
  • Android图表库HelloChart绘制多折线图

    Android图表库HelloChart绘制多折线图攻略 HelloChart是一个功能强大的Android图表库,可以用于绘制多种类型的图表,包括折线图。下面是绘制多折线图的完整攻略,包含两个示例说明。 步骤一:添加依赖 首先,在项目的build.gradle文件中添加以下依赖: dependencies { implementation ‘com.git…

    other 2023年9月7日
    00
  • Go基础教程系列之import导入包(远程包)和变量初始化详解

    Go基础教程系列之import导入包(远程包)和变量初始化详解 在Go语言中,我们可以使用import语句导入包(包括本地包和远程包),并使用变量初始化来为变量赋初值。以下是关于这两个主题的详细攻略。 1. 导入包(远程包) 要导入包,我们可以使用import关键字,后跟包的路径。对于本地包,我们可以直接指定包的相对或绝对路径。对于远程包,我们可以使用完整的…

    other 2023年10月12日
    00
合作推广
合作推广
分享本页
返回顶部