RuiCode

  • 首页
  • 归档

  • 搜索
操作系统 并发 排序 网络 源码分析 二分法 面试 不重复算法 指针移动 java 算法 mysql Linux

在centos7上搭建mysql8遇到的坑

发表于 2020-02-07 | 分类于 经验分享 | 0 | 阅读次数 790

最近在学习JVM、SpringBoot、Mysql、多线程和并发,加上在家中躲避疫情有时间,于是想搭建一个基于SpringBoot的开源博客halo学习。

halo默认使用h2数据库,不过由于博客是开放平台,h2 console不可以打开,并且最近在增强对mysql数据库的练习,因此想着在云服务器上再搭一个mysql。

首先在菜鸟教程找了一篇mysql安装教程,顺利的安装并运行了5.6版本。不幸的是,在我看halo官方修改数据库配置的时候,发现halo支持5.7以上版本。为了避免版本冲突,就把5.6卸载并安装8.0。

8.0的安装过程还算顺利,但是在开启mysql服务的时候:

systemctl start mysqld.service

开始出现问题了:

mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Fri 2020-02-07 12:12:48 CST; 6s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 29626 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)
  Process: 29593 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 29626 (code=exited, status=1/FAILURE)
   Status: "Server startup in progress"
    Error: 13 (Permission denied)

Feb 07 12:12:47 VM_0_12_centos systemd[1]: Starting MySQL Server...
Feb 07 12:12:48 VM_0_12_centos systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
Feb 07 12:12:48 VM_0_12_centos systemd[1]: Failed to start MySQL Server.
Feb 07 12:12:48 VM_0_12_centos systemd[1]: Unit mysqld.service entered failed state.
Feb 07 12:12:48 VM_0_12_centos systemd[1]: mysqld.service failed.

一开始还只是以为mysql5.6没有卸载干净,没多想,直接按照网上教程彻底卸载mysql,重装还是出现问题。
又仔细看了一下,是这个命令执行失败了:

/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)

我自己在终端试了一下这个命令,发现有一个warning:

TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details

这个问题在 /etc/my.cnf 配置文件添加 explicit_defaults_for_timestamp=true
除了这个问题,还有一个error:

[ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!

mysqld模式不允许root模式启动,同样需要在配置文件添加 user=mysql

确保mysqld可以启动的前提下,我又运行了一遍 mysqld.service,发现还是报错。结合下面的错误提示:

Error: 13 (Permission denied)

我觉得可能是/usr/sbin 路径权限的问题,于是使用赋予权限的指令:

chown -R mysql:mysql /usr/sbin

这个问题就排除了。
期间还报了一个类似的错误:

Could not open file '/var/log/mysqld.log' for error logging: Permission deni

同样,给mysql赋予权限就可以解决。

解决了以上问题,还是报错,这次只给了 Status: "Server startup in progress" 这么一个状态,没有错误代码。通过查看日志 /var/log/mysqld.log ,发现一直存在的问题还是没有解决:

--initialize specified but the data directory has files in it.
Aborting.

这个问题之前在网上搜索是删除 /var/lib/mysql 然后重启。在未解决以上问题之前,这个办法似乎没有用。当时头就很大。在多次尝试之后,本着放弃的态度尝试最后一遍这个方法,最后发现竟然可以运行啦。
mysql8关于设置密码的问题,网上教程有很多,在这里就不赘述了。

回过头反思了一下搭建博客网站的过程,发现自己还是有一些成长的。之前在linux系统上找错误,心里一直是非常抵触的,特别担心解决了一个问题之后,接二连三还是有问题。通过这次的经历,明白了找错误无非就是找log文件位置,定位到错误行,分析错误原因,调试并解决问题。有问题就勇敢的面对,并尝试各种手段解决。之前的实习也有类似的问题,想一想,大部分都是在师傅的帮助下解决的,真正在centos系统中发现问题、定位错误原因,还是第一次。到了正式工作的环境中,相信这样的情况肯定还会更多。如果自己不去想,不去上手,就永远不会成长。

最近疫情非常严重,得知李文亮医生不幸去世,深感痛惜。愿“平凡”的李医生一路走好。

  • 本文作者: RuiCode
  • 本文链接: https://www.ruicode.cn/archives/在centos7上搭建mysql8遇到的坑
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 操作系统 # 并发 # 排序 # 网络 # 源码分析 # 二分法 # 面试 # 不重复算法 # 指针移动 # java # 算法 # mysql # Linux
三数之和
  • 文章目录
  • 站点概览
RuiCode

RuiCode

19 日志
5 分类
13 标签
Creative Commons
© 2021 RuiCode
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4

冀公网安备 13050002001906号