Linux下mysql服务无法启动启动不了

MySQL数据库启动失败解决_数据库技术_Linux公社-Linux系统门户网站
你好,游客
MySQL数据库启动失败解决
来源:Linux社区&
作者:pangge
重启服务器后--&重启应用服务(Confluence)--&报错,数据库连接失败(MySQL设置了开机自启动)--&查看MySQL数据库状态:
[root@ www.linuxidc.com&~]# ps -ef | grep mysqlroot& & & 0 11:28 pts/0& & 00:00:00 grep mysql
启动mysql服务器
[root@ www.linuxidc.com&data]# service mysql startMySQL server PID file could not be found![失败]Starting MySQL.............. ERROR! The server quit without updating PID file (/mydata/data/fisheye..pid).[失败]
查看错误日志:
[root@ www.linuxidc.com&data]# tail -100 fisheye.errInnoDB: Last MySQL binlog file position 0 , file name ./mysql-bin.000016:13:28& InnoDB: Waiting for the background threads to start:13:29 InnoDB: 5.5.33 log sequence number 17:13:29 UTC - mysqld got signal 11 ;This could be because you hit a bug. It is also possible that this binaryor one of the libraries it was linked against is corrupt, improperly built,or misconfigured. This error can also be caused by malfunctioning hardware.We will try our best to scrape up some info that will hopefully helpdi:13:29 mysqld_safe mysqld from pid file /mydata/data/fisheye.pid ended
未发现明显性错误提示,所以手动创建一个pid文件试试
[root@ www.linuxidc.com&data]# touch /mydata/data/fisheye.pi
再进行重启服务:
[root@ www.linuxidc.com&data]# service mysql restartERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
突然想到之前看过此类报错的文章,记得有可能是磁盘空间不足导致的mysql无法启动。
[root@ www.linuxidc.com data]# df -h文件系统& & & & & & & 容量& 已用 可用 已用% 挂载点/dev/sda1& & & & & & 9.5G& 9.5G& 0& 100% //dev/sda4& & & & & & 5.5G& 1.3G& 4.0G& 24% /mnt/backup/dev/mapper/IhuilianVG-IhuilianLV00& & & & & & & & & & & 22G& 4.2G& 17G& 20% /var/www/apptmpfs& & & & & & & & 1.3G& & 0& 1.3G& 0% /dev/shm
果然如此,下面罗列一些类似问题(无法启动)的解决思路:
1.可能是datadir目录存在的分区满了(df -h )
& & & 解决方法:打开配置文件/etc/my.cnf,在[mysqld]节下重新指定数据目录(datadir),并将原来的数据目录迁移到重新制定的数据目录处
& & & 关于迁移:(1)、cp或者tar的时候一定要把权限给带上,但是为防止意外建议再授权一次;(2)、数据比较大时一定要先压缩再迁移,保证完整性,特别是scp到其他机器时可能会超时所以一定要压缩(tar.gz);(3)、若是移动至另外的服务器一定要保证mysql版本一致。
2.可能是/mydata/data/fisheye.pid文件没有写的权限
& & & 解决方法 :给予权限,执行 &chown -R mysql:mysql /mydata/data/&& 然后重新启动mysqld!
3.可能进程里已经存在mysql进程
& & & 解决方法:用命令&ps -ef|grep mysqld&查看是否有mysqld进程,如果有使用&kill -9& 进程号&杀死,然后重新启动mysqld!
4.可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
& & & 解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。
5.skip-federated字段问题(报错信息:[ERROR] /mydata/data/mysql/libexec/mysqld: unknown option '--skip-federated')
& & & 解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。
6.selinux惹的祸,如果是系统,默认会开启selinux
& & & 解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。
Linux下MySQL启动失败的解决一例
--------------------------------------分割线 --------------------------------------
14.04下安装MySQL
《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF
Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL
Ubuntu 14.04下搭建MySQL主从服务器
Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群
Ubuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb
MySQL-5.5.38通用二进制安装
--------------------------------------分割线 --------------------------------------
本文永久更新链接地址:
相关资讯 & & &
& (08/26/:57)
& (05/25/:10)
& (12/10/:25)
& (08/17/:28)
& (03/21/:26)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款1,使用service 启动、关闭MySQL服务
service mysql start
service mysql stop
service mysql restart运行上面命令,其实是service命令去找/etc/init.d下的相关的mysql脚本去执行启动、关闭动作。2,使用/etc/init.d/mysql启动、关闭MySQL服务,
[root@DB-Server bin]# /etc/init.d/mysql start
Starting MySQL....[& OK& ]
[root@DB-Server bin]# /etc/init.d/mysql stop
Shutting down MySQL..[& OK& ]
[root@DB-Server bin]#
阅读(...) 评论()linux 下MySQL服务器的启动与停止
& 发布时间: 17:06:46 & 作者:佚名 &
一、以非特权用户运行MySQL服务器
在讨论如何启动MySQL服务器之前,让我们考虑一下应该以什么用户身份运行MySQL服务器。服务器可以手动或自动启动。如果你手动启动它,服务器以你登录Unix(Linux)的用户身份启动,即如果你用paul登录Unix并启动服务器,它用paul运行;
一、以非特权用户运行MySQL服务器
在讨论如何启动MySQL服务器之前,让我们考虑一下应该以什么用户身份运行MySQL服务器。器可以手动或自动启动。如果你手动启动它,器以你登录Unix(Linux)的用户身份启动,即如果你用paul登录Unix并启动器,它用paul运行;如果你用su命令切换到root,然后运启动器,则它以root运行。然而,大多数情况下你可能不想手动启动器,最有可能是你安排MySQL服务器在引导时自动启动,作为标准引导过程的一部分,在Unix下,该引导过程由的Unix用户root执行,并且任何在该过程中运行的进程均以root权限运行。
你应该牢记MySQL服务器启动过程的两个目标:
你想让器以某个非root用户运行。一般地,你想限制任何运行进程的能力,除非确实需要root权限,而MySQL不需要。
你想让器始终以同一个用户运行,此时用一个用户而其他时候以另一个不同的用户运行器是很不方便的,这造成了为文件和目录以具有不同属主的数据目录下被创建,并可能导致器不能访问数据库或表,这看你以哪个用户运行。统一用同一个用户运行器是你避免这个问题。
要一个普通的非特权用户运行器,按照下列步骤:
选择一个用于运行器的用户,mysqld可以用任何用户运行。但在概念上较清晰的是为MySQL操作创建一个单独的用户。你也可以特别为MySQL选择一个用户组。本文使用mysqladm和mysqlgrp分别作为用户名和用户组名。
如果你已在自己的账号下好了MySQL且没有上的特殊管理权限,你将可能在你自己的用户ID下运行器。在这种情况下,用你自己的登录名和用户组代替mysqladm和mysqlgrp。
如果你在RedHat Linux上用rpm文件MySQL,该将自动创建一个名为mysql的账号,用该账号代替mysqladm。
如果必要,用通常的创建用户的过程创建器账号,你需要用root做它。
如果器在运行,停止它。
修改数据目录和任何子目录和文件的属主,这样使得mysqladm用户拥有它们。例如,如果数据目录是/usr/local/var,你可以如下mysqladm的属主(你需要以root运行这些命令):
#cd /usr/local/var
#chown -R mysqladm.mysqlgrp
修改数据目录和任何子目录和文件的权限,使得它们只能由mysqladm用户访问。如果数据目录是/usr/local/var,你可以由mysqladm拥有的任何东西:
# cd /usr/local/var
# chmod -R go-rwx
当你数据目录及其内容的属主和模式时,注意符号连接。你需要顺着它们并改变它们指向的文件或目录的属主和模式。如果连接文件的目录位于不属于你的地方,会有些麻烦,你可能需要root身份。
在你完成了上述过程后,你应该确保总是在以mysqladm或root登录时启动器,在后者,确定指定--user=mysqladm选项,使器能将其用户ID切换到mysqladm(同时也适用于启动过程)。
--user选项在MySQL 3.22中引入,如果你有老版本,你可以使用su命令告诉在以root运行时在特定的用户下运行器。
二、启动器的
在我们确定了用于运行器的账号后,你可以选择如何安排启动器。你可以从命令行手动或在引导过程中自动地运行它。对于启动器由三种主要:
直接调用mysqld。
这可能是最不常用的,建议不要多使用,因此本文不详细介绍。
调用safe_mysqld脚本。
safe_mysqld试图确定器程序和数据目录的位置。然后用反映这些值的选项调用器。safe_mysqld将标准出错设备从器重定位到数据目录下的一个出错文件,使得有它的一条记录。在启动器后,safe_mysqld也监视它并且如果它死掉则重启它。safe_mysqld常用于BSD风格的Unix系统。
如果你以root或在引导期间启动sqfe_mysqld,出错日志由root拥有,这可能在你以后试图用一个非特权用户调用safe_mysqld时将导致&permission denied&(权限拒绝)错误,删除出错日志再试一下。
调用mysql.server脚本。
这个脚本通过有意用于System V的启动和停止上的safe_mysqld.mysql.server来启动器,该包含几个包含在机器进入或退出一个给定运行级别时被点用的脚本目录。它可以用一个start或stop参数点用以表明你是想启动还是想停止器。
safe_mysqld脚本在MySQL安装目录的bin目录下,或可在MySQL源代码分发的scripts目录下找到。mysql.server脚本在MySQL安装目录下的share/mysqld目录下或可以在MySQL源代码分发的support_files目录下找到。如果你想使用它们,你需要将它们拷贝到适当的目录下。
对BSD风格的(FreeBSD,OpenBSD等),通常在/etc目录下有几个文件在引导时初始化,这些文件通常有以&rc&开头的名字,且它有可能由一个名为&rc.local&的文件(或类似的东西),特意用于启动本地的。在这样的上,你可能将类似于下列的行加入rc.local文件中以启动器(如果safe_mysqld的目录在你的上不同,修改它即可):
if [ -x /usr/local/bin/safe_mysqld ]; then
/usr/local/bin/safe_mysqld &
对于对于System V风格的,你可以通过将mysql.server放在/etc下适当的启动目录下来它。如果你运行Linux并从一个RPM文件MySQL,这些已经为你做好了,否则将脚本在主启动目录下,并将指向它的连接放在适当的运行级别目录下。你也可以使脚本只能由root启动。
启动文件的目录布局各不同,所以你需要检查一下看看你的如何组织它们。例如在Linux PPC上,目录是/etc/rc.d和/etc/rc.d/rc3.d,这样你可以这样脚本:
#cp mysql.server /etc/rc.d/init.d
#cd /etc/init.d
#chmod 500 mysql.server
#cd /etc/rc.d/rc3.d
#ln -s ../init.d/mysql.server S99mysql
在solaris上,主脚本目录是/etc/init.d,并且运行级别目录是/etc/rd2.d,所以命令看上去像这样:
#cp mysql.server /etc/rc.d/init.d
#cd /etc/init.d
#chmod 500 mysql.server
#cd /etc/rc2.d
#ln -s ../init.d/mysql.server S99mysql
在启动时,S99mysql脚本将自动用一个start参数调用。如果你有chkconfig命令(Linux上有),你可以由它帮助mysql.server脚本而不是象上面那样手工运行上述命令。
2.1 指定启动选项
如果你想在器启动时指定额外的启动选项,你可有两种。你可以修改你使用的启动脚本(safe_mysqld或mysql.server)并直接在调用器的行上指定选项,或在一个选项文件中指定选项。建议你如果可能在一个全局选项文件中指定选项,它通常位于/etc/my.cnf(Unix)或c:\my.cnf(Windows)。
某些种类的信息无法以器选项指定。对于这些你可能需要修改safe_mysqld。例如,如果你的器不能正确选择本地时区而以GMT返回时间值,你可以TZ环境变量给它一个指示。如果你用safe_mysqld或mysql.server启动器,你可以将一个时区加到safe_mysqld。找到启动器的行并在该行前加入下列命令:
TZ=US/Central
上面命令的语法是Solaris的,对于其他语法可能不同,请查阅相关手册。如果你确实修改了你的启动脚本,要记住下次你MySQL时(如升级到新版本),你的修改将失去,除非你首先在别处复制了启动脚本。在了新版本后,比较新旧版本的脚本,看看你需要重建什么改变。
2.2 在启动时检查你的表
除了安排你的器在引导时启动,你可能要myisamchk和isamchk脚本,以在器启动前检查你的表。你可能在一个崩溃后重启,有可能表已经损害,在启动前检查它是一个发现问题的好。
三、停止器
要手工启动器,使用mysqladmin:
%mysqladmin shutdown
要自动停止器,你不需做特别的事情。BSD系统一般通过向进程发一个TERM信号停止,它们或者正确应答它或被粗鲁地杀死。mysqld在它收到这个信号时以终止作为应答。对于用mysql.server启动器的System V风格的,停止进程将用一个stop参数调用该脚本,告诉器终止,当然假定你已了mysql.server。
四、如果你不能连接器,如何重新获得对器的控制
在某些情况下,你可能由于不能连接它而手工重启器。当然,这有点矛盾。因为一般你通过连接器而手工关掉它,那么这种情况如何会出现。
首先,MySQL root口令可以已经为你不知道的值,这可能发生在你修改口令时,例如,如果你在输入新口令时偶然键入一个不可见的控制字符。你也可能忘记口令。
其次,连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的运行一个cron任务删除了/tmp下的临时文件。
如果你因为丢失套接字文件而不能连接,你可以简单地通过重启器重新创建得到它。因为器在启动时重新创建它。这里的骗局是你不能用套接字建立连接因为它不见了,你必须建立一个TCP/IP连接,例如,如果器主机是pit.snake.net,你可以这样连接:
%mysqladmin -p -u root -h pit.snake.net shutdown
如果套接字文件被一个cron任务删除,问题将重复出现,除非你修改cron任务或使用一个或使用一个不同的套接字文件,你可以使用全局选项文件指定一个不同的套接字,例如,如果数据目录是/usr/local/var,你可以通过将下列行加入/etc/my.cnf中,将套接字文件移到那里:
socket=/usr/local/var/mysql.sock
socket=/usr/local/var/mysql.sock
对器和客户均指定路径名,使得它们都使用同一个套接字文件。如果你只为器路径,客户程序将仍然期望在原位置执行套接字,在修改后重启器,使它在新位置创建套接字。
如果你由于忘记root口令或已经将它为不同于认为的值而不能连接,你需要重新获得对器的控制,是你能再次口令:
如果你以root登录器主机,你可以用kill命令终止器。你可以使用ps命令或通过寻找器的PID文件(通常在数据目录中)找出器进程的ID。
最好是首先尝试用一个向器发出一个TERM信号的正常kill看它是否将以正常终止应答。这种方式下,表和日志将正确地被清空。如果器阻塞并且不应答一个正常终止信号,你可以用kill -9强制终止它。这是最后的手段了,因为这可能有未清空的修改,而且你冒着让表处于一个不一致状态的风险。
如果你用kill -9终止器,要确保在启动器前用myisamchk和isamchk检查你的表。
用--skip-grant-table选项重启器。
这告诉器不使用授权表验证连接,这允许你以root连接而无须口令。在你已经连接后,改变root口令。
用mysqladmin flush-privileges告诉器再次使用授权表启动
如果你的mysqladmin版本不认识flash-privileges,试一试reload。
五、运行多个器
大多数再一台给定的机器上运行单个MySQL服务器,但在很多情况下,运行多个器是很有用的:
你可能想测试一个器的新版本,而保留你正在运行的生产器。在这种情况下,你会运行不同的器代码。
一般限制每个进程的打开文件句柄数量。如果你的很难提高这个限制,运行多个器是限制的一种。在这种情况下,你可能运行统一器的多个实例。
ISP经常为其客户提供自己的MySQL安装,有必要涉及单独的器。在这种情况下,你可能运行同一版本的多个实例或不同版本,如果不同的客户想要不同版本的MySQL。
很自然地,运行多个器比只运行一个器要复杂得多。如果你多个版本,你不能在同一个地方所有东西。当器运行时,某些参数必须或很可能对每个器是唯一的,它们包括器在哪、其数据目录的路径名、TCP/IP端口和UNIX域套接字路径名以及用于运行器的UNIX账号(如果你不再同一账号下运行所有器)。如果你决定运行多个器,一定要注意你使用的参数,是你不至于丢失对所发生的事情的踪迹。
5.1 配置和多个器
如果你要运行不同版本的器而不是同一版本的多个实例,你必须在不同地点它们。如果你二进制分发(不用RPM),它们将在包含不同版本号的目录名下。如果你从源代码,最简单的是在每个版本运行configure配置MySQL安装过程中使用--with-prefix选项使得不同分发分开,这将使得所有东西在一个单独的目录下,你可以将目录域分发版本号联系起来,如,你可以象这样配置一个MySQL分发,其中version是MySQL版本号:
%.configure --with-prefix=/usr/local/mysql-version
--with-prefix选项也决定了器的一个唯一数据目录。你可能想加上其它器特定的选项,如TCP/IP端口号和套接字路径名(--with-tcp-port和--with-unix-socket)。
如果你想运行同一版本器的多个实例,任何必须基于一个器特定的选项将需要在运行时指定。
5.2 多器的启动过程
启动多个器比使用一个器要复杂。因为safe_mysqld和mysql.server均在单个器上工作得最好。建议你仔细研究一下safe_mysqld并用它作为你的启动过程的基础,使用你修改的版本,你能针对你自己的需要更精确地裁剪它。
你必须处理的一个问题是如何在选项文件(my.cnf)中指定选项。对于多器,你不能对于每个不同的器使用/etc/my.cnf,你只能对所有器相同的使用该文件。如果器有一个不同的编译进去的数据目录位置,你可以在每个器数据目录中的my.cnf中指定所有器要使用的,而使用DATADIR/my.cnf指定器特定的,这里DATADIR以器不同而不同。
另一种指定器选项的是用--default-file=path_name作为命令行的第一个选项,告诉器从名为path_name中的文件中读取选项,这样你可以把一个器选项放在一个对该器唯一的文件中,然后告诉器在启动时读取该文件。注意,如果你指定这个选项,将不使用通常的选项文件如/etc/my.cnf的任何一个。
大家感兴趣的内容
12345678910
最近更新的内容关于linux mysql启动错误问题
最近安装mysql时,启动出现了问题,问题提示为:Starting MySQL..The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).[FAILED]
这具体问题要具体分析,网上也有很多人遇到了此问题,按照网上的方法一个个实验,我这边使用方法一就可以启动了,具体方法如下所示:
1.原因:可能是/usr/local/mysql/mysql.pid文件没有写的权限解决方法 :给予权限,执行 “chmod 775 /usr/local/mysql/ -R”
然后重新启动mysqld。
2.原因:可能进程里已经存在mysql进程
解决方法:用命令“ps
-ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9
进程号”杀死,然后重新启动mysqld。
3.可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。4.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data5.skip-federated字段问题解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。6.错误日志目录不存在解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限7.selinux惹的祸,如果是centos系统,默认会开启selinux解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。但是没有解决,最后直接给/usr/local/mysql/data 目录 chmod 777 -R
/usr/local/myql/data 问题解决 应该是 权限问题,不能生成localhost.localdomain.pid
文件localhost.localdomain.err8 log-bin路径错误,log-bin指定的只有是$basedir下的好像才行
9.查看对应数据库下的error
log,例如我的数据库为,/usr/local/mysql/var目录,其下的localhost.localdomain.err为错误日志,只要把其下的ib_logfile*删除即可,重启mysql即可
没有更多推荐了,启动和停止MySQL服务_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
启动和停止MySQL服务
总评分4.2|
用知识赚钱
试读已结束,如果需要继续阅读或下载,敬请购买
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 mysql无法启动 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信