首页 > 数据库 >MySQL 8 手动安装后无法启动的问题解决

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

时间:2023-12-18 12:05:52浏览次数:46  
标签:00 local 手动 systemd mysqld usr mysql MySQL 安装



MySQL 8  手动安装后无法启动的问题解决_数据库

首先的自我检讨与自我批评,最近有点懒,知识的更新慢,最近在更换系统到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 作为保留账号。相关的处理,必须在安装系统后,在进行。

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

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

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

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  持续的学习的重要性

MySQL 8  手动安装后无法启动的问题解决_数据库_04

标签:00,local,手动,systemd,mysqld,usr,mysql,MySQL,安装
From: https://blog.51cto.com/u_14150796/8870907

相关文章

  • CentOS安装Docker(一)
    1.在Linux中,可以通过以下命令查看系统版本:cat/etc/os-release2.在Linux中,可以通过以下命令查看版本(CentOS 要求内核版本不低于3.10):uname-aLinuxVM-8-2-centos3.10.0-1160.99.1.el7.x86_643.如果之前安装过旧版本的Docker,可以使用下面命令卸载://换行拼接符号“\”......
  • linux安装nginx
    安装依赖//一键安装四个依赖环境yum-yinstallgcczlibzlib-develpcre-developensslopenssl-devel上传压缩包并解压上传nginx压缩包到/usr/local/nginx目录下tarxvfnginx-1.24.0.tar.gz安装nginxcdnginx-1.24.0#指定nginx安装的目录./configure--prefix......
  • 安装docker
    卸载docker删除docker所在目录rm-rf/etc/dockerrm-rf/run/dockerrm-rf/var/lib/dockershimrm-rf/var/lib/docker删除docker进程ps-ef|grepdockerkill-9pid卸载docker相关包yumlistinstalled|grepdockeryumremovecontainerd.io.x86_......
  • docker安装nginx
    下载nginx镜像dockerpullnginx:1.24.0简易启动nginxdockerrun-p81:80-d--namesimple-nginxnginx:1.24.0创建本地挂载文件夹#创建四个文件夹conf,log,html,conf.dmkdir-p/home/nginx/{conf,logs,html,conf.d}复制简易nginx中的文件到挂载目录中#复制......
  • 【python】浏览器自动化Selenium安装WebDriver最新Chrome驱动
    selenium 是浏览器自动化测试框架,原本被用于网页测试。但到了爬虫领域,它又成为了爬虫的好帮手。selenium 可以控制你的浏览器,模仿人浏览网页,从而获取数据,自动操作等。首先打开 Chrome浏览器,依次点击浏览器右上角的 三个点 - 帮助 - 关于GoogleChrome查看浏览器版本信......
  • Linux服务器快速安装MongoDB-5.0
    最近开始体验FastGPT开源知识库问答系统,用他们试着开发调试一些小助手。这中间需要使用到MongoDB,就在自己服务器上进行了安装,特此记录下。环境说明:阿里云ECS,2核8G,X86架构,CentOS7.9操作系统。选择版本1.打开MongoDB社区版下载页面,选择我们想要安装的版本、操作系统、和包类型,......
  • mysql 5.7和8.0 yum安装
    安装环境Centos7.61.下载mysql源安装包$wgethttp://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm2.安装mysql源$yumlocalinstallmysql57-community-release-el7-8.noarch.rpm3.检查mysql源是否安装成功$yumrepolistenabled|grep"mysql.-comm......
  • k8s安装metrics-server
    KubernetesMetricsServer:KubernetesMetricsServer是Cluster的核心监控数据的聚合器,kubeadm默认是不部署的。MetricsServer供Dashboard等其他组件使用,是一个扩展的APIServer,依赖于APIAggregator。所以,在安装MetricsServer之前需要先在kube-apiserver中开启API......
  • kubernetes1.18.2安装kube-prometheus
    注:使用kube-prometheus安装非常方便,前面的prometheus+grafana+metrics-server都不用安装,已经集成在里面。1、clonegithub地址gitclonehttps://github.com/coreos/kube-prometheus.gitcdkube-prometheus2、查看manifest路径下所有的yaml文件[root@master1manifests]#lltotal......
  • MeterSphere安装
    介绍MeterSphere是一站式开源持续测试平台,涵盖测试跟踪、接口测试、性能测试、团队协作等功能,兼容JMeter等开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量软件的交付。前提条件1、需要一台不小于8G内存且可以访问互联网的64位Linux主机;2......