CentOs7安装mysql8时,无法启动服务解决方案.md

MySql安装过程遇到的问题

服务器在安装mysql时遇到了莫名其妙的问题,及记录其解决办法。

一.基础安装
  1. 首先从mysql官网中把mysql的rpm包下载下来(没有安装wget的同学先百度一下安装wget):

wget https://dev.mysql.com/get/mysql80-community-release-el7-4.noarch.rpm

具体什么版本需要到mysql的官网去查看,有可能我目前下载的这个版本已经下架了,导致输入wget命令时会报连接不上的错误,注意,我的服务器是CentOs7,所以安装的是Linux7

https://dev.mysql.com/downloads/repo/yum/

在这里插入图片描述

  1. 使用yum安装rpm包:

yum -y install mysql80-community-release-el7-4.noarch.rpm

  1. 安装MYSQL服务

yum -y install mysql-community-server

  1. 启动MySQL

systemctl start mysqld.service

我的服务器在执行这个命令的时候了下面这个错:

Job for mysqld.service failed because the control process exited with error code. See “systemctl status mysqld.service” and “journalctl -xe” for details.

下面看造成原因与解决方案

二.解决方案
  1. 首先我们看看报错原因
  • 输入命令: systemctl status mysqld.service
    日志信息:
    Dec 12 14:36:23 iZ2zeicmjky4arc7iaohurZ systemd[1]: mysqld.service: control process exited, code=exited status=217
    Dec 12 14:36:23 iZ2zeicmjky4arc7iaohurZ systemd[1]: Failed to start MySQL Server.
    Dec 12 14:36:23 iZ2zeicmjky4arc7iaohurZ systemd[1]: Unit mysqld.service entered failed state.
    Dec 12 14:36:23 iZ2zeicmjky4arc7iaohurZ systemd[1]: mysqld.service failed.
    Dec 12 14:36:23 iZ2zeicmjky4arc7iaohurZ systemd[1]: mysqld.service holdoff time over, scheduling restart.
    Dec 12 14:36:23 iZ2zeicmjky4arc7iaohurZ systemd[1]: Stopped MySQL Server.
    Dec 12 14:36:23 iZ2zeicmjky4arc7iaohurZ systemd[1]: start request repeated too quickly for mysqld.service
    Dec 12 14:36:23 iZ2zeicmjky4arc7iaohurZ systemd[1]: Failed to start MySQL Server.
    Dec 12 14:36:23 iZ2zeicmjky4arc7iaohurZ systemd[1]: Unit mysqld.service entered failed state.
    Dec 12 14:36:23 iZ2zeicmjky4arc7iaohurZ systemd[1]: mysqld.service failed.
    这日志提示可以说一点用都木有了

  • 输入另外一个命令: journalctl -xe
    日志信息:

    – Unit mysqld.service has begun starting up.
    Dec 12 14:56:21 iZ2zeicmjky4arc7iaohurZ systemd[14127]: Failed at step USER spawning /usr/bin/mysqld_pre_systemd: No such process
    – Subject: Process /usr/bin/mysqld_pre_systemd could not be executed
    – Defined-By: systemd
    – Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

    – The process /usr/bin/mysqld_pre_systemd could not be executed and failed.

    – The error number returned by this process is 3.
    这里有一个很关键的信息:
    Process /usr/bin/mysqld_pre_systemd could not be executed
    没有权限去执行mysqld_pre_systemd这个东西

  • 查资料,没有找到mysqld_pre_systemd这个东西是干嘛的,但从名字带了个pre,猜测是mysqld做什么初始化的时候,没有权限。
    接着我去查看mysql的日志(一般没动过mysql配置文件的话,日志文件位置是/var/log/mysqld.log,如果修改过的话,则去/etc/my.cnf查看。),发现一个很奇怪的事情,我的目录下竟然没有mysql的日志文件。再结合上面那个报错去看,我推测是操作mysql的默认用户出现问题(在linux下,每个工具或中间件都会有一个默认操作的用户,一般安装时,都会给你新增一个用户,然后就会用这个默认用户操作对应工具或中间件)

  • 查资料发现mysql默认的操作用户和用户组的名称都叫mysql,然后在linux中看看是否有该用户和用户组
    cat group|grep mysql
    cat passwd|grep mysql

    发现用户组和用户都没有,既然如此。我们就手动给他新建一个

  • 输入命令,增加mysql用户组和用户:
    groupadd mysql
    useradd mysql -g mysql -M -s /sbin/nologin

    输入命令可能会报下面的错误,意思就是无法对group和useradd文件进行编辑:
    groupadd: cannot open /etc/group
    useradd: cannot open /etc/passwd

  • 输入命令,查看group的隐藏权限
    lsattr /etc/group
    显示:-----a-------e-- /etc/group
    按道理这里是没啥问题的,a是不可删除,可添加内容的意思
    这里只能试下把a删掉:chattr -a /etc/group
    然后这样子竟然就能新建了,passwd和shadow同样执行者样的操作

  • 重新再试下启动mysql: **systemctl start mysqld.service **
    虽然同样报错,但是,这次启动速度慢了很多,而且报错也不一样。去到mysql的日志目录(/var/log/mysqld.log),发现这次mysql的日志文件生成了.进入日志文件查看报错原因:
    A message intended for a client cannot be sent there as no client-session is attached. Therefore, we’re sending the information to the error-log instead: MY-000001 - Can’t create/write to file ‘/var/run/mysqld/mysqld.pid’ (OS errno 13 - Permission denied)
    MySQL服务在启动的时候,不能创建pid文件,一般这个不能创建pid很大概率就是操作的用户没有权限去执行某个文件。也就是mysql用户没有权限去执行/var/run/mysqld/mysqld.pid,那么我们把这个文件的属主分配给mysql
    chown mysql.mysql /var/run/mysqld/

  • 这时候,再次启动mysql: systemctl start mysqld.service,终于成功了。

三.mysql改密码等操作

这里推荐去看一位博主的博文,人家记录的很详细,我就不cv过来了
https://www.cnblogs.com/ivictor/p/5146247.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值