MySQL 8 手动安装后无法启动的问题解决

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(共1730人左右 1 + 2 + 3 + 4 +5) 4群(230+),另欢迎 OpenGauss 的技术人员加入。

af1d86cf5fa16d0c75c2f1fd091816b1.png

首先的自我检讨与自我批评,最近有点懒,知识的更新慢,最近在更换系统到ubuntu 22.04 ,废弃centos  ,同时MYSQL 都在8 以上,之前MySQL都是在CENTOS 7.5 上安装,并且也都自动化安装,基本上没有问题,但到了ubuntu 22.04 基于对于系统的不熟悉, 产生很多的问题。

今天就梳理一下,转换了系统对于MySQL 8 安装中的一些问题,在说这些问题的之前,需要对系统的知识进行一个 review ,在新的操作系统中引入了systemd 作为init系统的替代品。

之前的LINUX 系统是通过INIT 系统来关系服务器中的进程,通过读取并执行/etc/inittab文件来确定要启动的进程,文件对于程序允许的级别进行了定义,每个运行的级别都有对应的目录,其中包含了该级别下所需要的启动服务脚本,INIT 通过运行的级别来配置信息,启动或停止相关的进程等,启动时会根据依赖关系逐个启动,但问题在于INIT 的系统启动的方式,由于串行的方式导致启动的速度慢,无法有效利用多核心的树立起,和并行能力,基于这个问题,操作系统推出了

SYSTEMD,UPSTART, OpenRC 等方式来进行替代,常见的替换的方式是systemd.

SYSTEMD  作为服务系统启动和管理的初始化管理有以下的一些特性和功能

1  并行启动,与传统的放回寺不同systemd 可以将启动的任务分配给多个CPU ,同时根据依赖关系,稳定可靠的只能排序,提高启动效率。

2  依赖关系的处理,在systemd 中可以表名服务和服务之间的依赖关系,他将自动解析依赖关系,并正确的按照流程启动依赖的程序

3  服务控制,systemd 提供完善的命令和工具来管理系统服务,通过 systemctl命令来启动和停止重启,冲加载服务和查询服务的状态,方面的分析系统状态和故障信息。

那么我的问题出现在哪里,在安装MYSQL8 到 ubuntu系统中时,在安装ubuntu 的时候,如果安装的账号中包含mysql将无法进行下一步,ubuntu 在账号中保留了mysql 作为保留账号。相关的处理,必须在安装系统后,在进行。

1803dd7f7f5f487295c9a899909ecac9.png

当然这不是本期要说的核心问题,在之前安装完MYSQL 后,直接将support-files 下的mysql.server 拷贝到 /etc/init.d/ 变换名字,直接就可以运行了,如 service mysqld start  36607dc6957d810e50352838ebc090ac.png

mysql@mysql:/usr/local/mysql/support-files$ sudo service mysqld start
Failed to start mysqld.service: Unit mysqld.service not found.
mysql@mysql:/usr/local/mysql/support-files$

这里按照原有的方式来去启动MySQL 失败了,错误提示 

failed to start mysqld.service : Unit mysqld.service not found 

,错误提示缺少 mysqld.service 

mysql@mysql:/usr/local/mysql/support-files$ sudo service mysqld start
mysql@mysql:/usr/local/mysql/support-files$ ps -ef | grep mysql
mysqlad+    1848       1  0 06:53 ?        00:00:00 /lib/systemd/systemd --user
mysqlad+    1849    1848  0 06:53 ?        00:00:00 (sd-pam)
mysqlad+    1857    1756  0 06:53 tty1     00:00:00 -bash
root        2830    2017  0 07:19 pts/0    00:00:00 su - mysql
mysql       2831    2830  0 07:19 pts/0    00:00:00 -bash
mysql       3116       1  0 07:29 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysql.pid
mysql       3206    3116 12 07:29 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=mysql.err --pid-file=/usr/local/mysql/data/mysql.pid
mysql       3251    2831  0 07:29 pts/0    00:00:00 ps -ef
mysql       3252    2831  0 07:29 pts/0    00:00:00 grep --color=auto mysql
mysql@mysql:/usr/local/mysql/support-files$

因为基于手动二进制值的方式进行的MySQL的安装,导致按照之前的经验直接将support_file中的文件放置到 /etc/init.d/ 中就可以进行数据库的启动和关闭,但是到了ubuntu 22.04 版本,即使使用service 命令来启动数据库或进行数据库的关闭,还是会通过systemd 来进行服务的管理,所以在对应的位置中必须有 mysqld.service 的文件和内容。

这里在测试中,mysqld.service 必须放置在一下位置的任意之一

/etc/systemd/system

/usr/lib/systemd/system

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=forking
TimeoutSec=0

# Execute pre and post scripts as root
PermissionsStartOnly=true

# Start main service
# 启动脚本
ExecStart=/usr/local/mysql/support-files/mysql.server start

#ExecStart=/bin/bash -c "(/usr/local/mysql/bin/mysqld_safe --defaults-file=/${db_home_dir}/${node}_cnf_${port_num}/${db_type}.cnf>/dev/null &)"
#ExecReload=/bin/kill -s HUP \$MAINPID


# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

Restart=on-failure
RestartPreventExitStatus=1
# OOM保护
OOMScoreAdjust=-1000

PrivateTmp=false

在补充了这个文件后,再次通过原来的方式启动mysql 8.035

mysql@mysql:/usr/lib/systemd/system$ sudo systemctl restart mysqld
mysql@mysql:/usr/lib/systemd/system$ sudo systemctl status mysqld
● mysqld.service - MySQL Server
     Loaded: loaded (/etc/systemd/system/mysqld.service; disabled; vendor preset: enabled)
     Active: active (running) since Wed 2023-11-22 08:20:57 UTC; 5s ago
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
    Process: 3688 ExecStart=/usr/local/mysql/support-files/mysql.server start (code=exited, status=0/SUCCESS)
   Main PID: 3696 (mysqld_safe)
      Tasks: 39 (limit: 9232)
     Memory: 362.7M
        CPU: 807ms
     CGroup: /system.slice/mysqld.service
             ├─3696 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql>
             └─3786 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=>

Nov 22 08:20:56 mysql systemd[1]: Starting MySQL Server...
Nov 22 08:20:56 mysql mysql.server[3688]: Starting MySQL
Nov 22 08:20:57 mysql mysql.server[3688]: . *
Nov 22 08:20:57 mysql systemd[1]: Started MySQL Server.

 当然也可以通过新的systemctl 的方式来进行数据库的操作。

通过这件事,意识到

1  知识的连贯性和关联性, 系统知识和数据库之间是有密切关系的,系统的升级和更换必然会引起知识的更新

2  持续的学习的重要性

9d206300f436a73ba5e261994c05995a.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/190621.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode:1457. 二叉树中的伪回文路径(DFS C++ Java)

目录 1457. 二叉树中的伪回文路径 题目描述: 原理思路: 1457. 二叉树中的伪回文路径 题目描述: 给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的…

基于单片机DHT11湿度测量与控制-CO2-光照报警系统程序和仿真

一、系统方案 1、本设计采用这51单片机作为主控器。 2、DHT11温湿度、CO2、光照强度送到液晶1602显示。 3、按键设置报警值。 4、蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 //初始化LCD*********************************…

初始化GPIO流程 以及点亮LED

点亮LED 需要单片机上的GIPIO端口引脚 输出对应的电压来对LED进行点亮 ,关于GPIO的初始化流程其实我们只需要牢牢记住这张图即可 具体参考: https://blog.csdn.net/k666499436/article/details/123971479 1. GPIO的初始化 流程 使能时钟 在stm32中&…

51单片机蜂鸣器发出悦耳的声音

51单片机蜂鸣器发出悦耳的声音 1.概述 这篇文章介绍单片机控制蜂鸣器入门小实验,通过该实验掌握蜂鸣器发声的原理,控制声音发出我们想听的音乐。 2.蜂鸣器发声 2.1.硬件原理 1.蜂鸣器正极接单片机20号引脚VCC,负极接19号引脚P1.7 2.20MH…

从微软Cosmos DB浅谈一致性模型

最近回顾了微软的Cosmos DB的提供一致性级别,重新整理下一致性模型的相关内容。 0. Cosmos DB Cosmos DB(Azure Cosmos DB)是由微软推出的一个支持多模型、多 API 的全球分布式数据库服务。它旨在提供高度可扩展性、低延迟、强一致性和全球…

Java作业四

要求:编写带图形界面的聊天程序,实现让客户可以持续地发送消息给服务器,服务器也可以即时看到客户端发送的消息,并回消息给客户端。 程序运行界面如下: 老师写的: 1、客户端 package Demo02; import java.…

Redis面试题:Redis的数据过期策略有哪些?

目录 面试官:Redis的数据过期策略有哪些 ? 惰性删除 定期删除 面试官:Redis的数据过期策略有哪些 ? 候选人: 嗯~,在redis中提供了两种数据过期删除策略 第一种是惰性删除,在设置该key过期时间后,我们…

避免客户开发信被限制的方法与策略

开发信是外贸或者出海企业常用的一种开发客户的方式。相较于其他的获客方式,开发信能够更加精准地投放到客户中,并且只需承担较低的成本。但是,由于一些限制管制要求,外贸人员可能会遇到开发新被限制的情况。今天,小编…

五大自动化测试的 Python 框架

1、Selenium: Selenium 是一个广泛使用的自动化测试框架,用于测试Web应用程序。它支持多种浏览器,并通过模拟用户在浏览器中的操作来进行测试。Selenium 的 Python 客户端库是 Selenium WebDriver,它提供了一组API来编写测试脚本&#xff0c…

SpringBoot校验List失效解决方法

文章目录 SpringBoot校验List失效解决方法附:校验基本数据类型和String类型的方法参数时也需要在类上加Validated SpringBoot校验List失效解决方法 失效场景示例代码: RestController RequestMapping("/v1/jx/flowSummary") Slf4j public cl…

【Hadoop】分布式文件系统 HDFS

目录 一、介绍二、HDFS设计原理2.1 HDFS 架构2.2 数据复制复制的实现原理 三、HDFS的特点四、图解HDFS存储原理1. 写过程2. 读过程3. HDFS故障类型和其检测方法故障类型和其检测方法读写故障的处理DataNode 故障处理副本布局策略 一、介绍 HDFS (Hadoop Distribute…

itop4412移植lrzsz工具踩坑笔记

4412开发板在传输文件一直用的都是tftp文件传输,但这样效率有点慢,平常在linux上习惯用lrzsz工具来传输文件,特此记录下,因为不熟悉linux编译 踩坑了很多地方 在操作前 我们的虚拟机要线安装好编译环境 下载lrzsz源码&#xff0…

轻松实现文件按数量平均分类,高效整理并自动新建文件夹保存“

你是否曾经因为文件数量过多,整理起来繁琐而感到烦恼?是否曾经为了新建文件夹而手动一个一个进行创建,费时又费力?现在,我们的智能文件管理工具将为你解决这些问题! 首先第一步,我们要进入文件…

整顿国产剧流水线“村花”?给三次元一点小小的美女震撼!

演员部分不符合角色的形象就用配角来补充说明,在国产剧里,短时间出现了两次。 演员的美从直观的肉眼可见,变成了配角用台词传达的结果。 (图:宁安如梦) 就像《以爱为营》里,女主的闺蜜随口就是…

【李宏毅-元学习】

一、基本概念 1、元学习:学习如何学习,超参数调整 2、机器学习和元学习 机器学习:定义函数(未知参数)-定义损失函数-优化(最小化损失函数) 3、什么是元学习 机器学习通过三个步骤找到了学习算…

Linux MMC子系统 - 6.eMMC 5.1工作模式-设备识别模式

By: Ailson Jack Date: 2023.11.26 个人博客:http://www.only2fire.com/ 本文在我博客的地址是:http://www.only2fire.com/archives/165.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。…

数据库基础教程之数据库的创建(二)

双击打开Navicat,点击:文件-》新建连接-》PostgreSQL 在下图新建连接中输入各参数,然后点击:连接测试,连接成功后再点击确定。 创建数据表   3.1 方法1   3.1.1.双击你的数据库-》双击public-》双击选中表-》右键-》新建表-》常规 3.1.2.设置字段信息   双击选中创建…

Leetcode 1727. 具有重排的最大子矩阵

题目要求: 给定一个大小为 m x n 的二进制矩阵,并且允许您以任意顺序重新排列矩阵的列。 对列进行最佳重新排序后,返回矩阵中每个元素都为 1 的最大子矩阵的面积。 输入:矩阵 [[0,0,1],[1,1,1],[1,0,1]] 输出:4 说明…

【领域驱动设计 学习目标及大纲】从CRUD到架构设计

从2018年至今,已工作了5年有余,回望这5年的工作历程,虽然一直在学习、一直在积累,但其实都在术的层面上停留,也就是具体的技术点。这5年多的时间里其实也不是没有窥道的想法: 一次是2018年刚工作的时候&am…

理解国外大佬用Web做出来跨窗口渲染动画效果

今天刷抖音看见国外一个大佬用Web做出来一个可以跨多浏览器窗口实时互动的渲染动画效果,觉得非常新奇,我就去看了一下源码,作者还写了一个非常好的例子帮助理解,我自己也仿写了作者的例子加深理解 **GitHub预览地址**麻烦帮忙点亮星星谢谢哈哈哈~ 整体思路是监听visibilityStat…