mysql重启报错

错误:

ERROR! MySQL server PID file could not be found! 

Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/mysql/run/mysql.pid). 

原因可能有以下几种:

1.mysql没有正常关闭

2.第二次在机器上安装mysql,有残余数据影响服务启动

3.权限问题,可能是/opt/mysql/data/数据目录没有权限

解决方案:

1.没有正常关闭的话,日志里会有写

         [Note] InnoDB: Database was not shutdown normally! 

         [Note] InnoDB: Starting crash recovery.

         [Note] InnoDB: Reading tablespace information from the .ibd files... 

     [ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous tablespace raildb/base_company_fullname uses space ID: 4 at filepath: ./raildb/base_company_fullname.ibd. Cannot open tablespace mysql/slave_master_info which uses space ID: 4 at filepath: ./mysql/slave_master_info.ibd 

   第一行:提示数据库没有正常关闭,第三行,提示正在从.ibd files读取tablespace information

   error的地方,大概意思就是读取不到raildb这个库的tablespace

 解决:vi /etc/my.cof  增加一行      innodb_force_recovery = 1

	     然后删除log里边的mysql-bin.index 这个文件

	     重启mysql

2.解决:去mysql的数据目录/data看看,如果存在mysql-bin.index,删除掉

3.权限问题不说

可能我的问题比较复杂,首先是机器二次安装mysql,导致重启报错,非正常停止mysql,启动失败。

解决方案:删除/tmp/mysql.sock 文件,重启MySQL

这里介绍一下mysql,sock

Mysql有两种连接方式:

 (1)TCP/IP

  (2)socket

    对mysql.sock来说,其作用是程序与mysqlserver处于同一台机器,发起本地连接时可用。

    例如你无须定义连接host的具体IP得,只要为空或localhost就可以。

    在此种情况下,即使你改变mysql的外部port也是一样可能正常连接。

    因为你在my.ini中或my.cnf中改变端口后,mysql.sock是随每一次 mysql server启动生成的。已经根

    据你在更改完my.cnf后重启mysql时重新生成了一次,信息已跟着变更。

如果你删除掉mysql.sock文件以后可能会报

  ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 

  mysql.sock不存在

mysql.sock是一个临时文件,在mysql启动时会自动生成,我的服务器未启动,自然就没有mysql.sock文件。

在错误日志中,启动失败的原因极为明显,file ‘./mysql-bin。000004’ not found,failed to open!mysql开启了bin日志功能,

到数据库根目录查看该文件是存在的,可能是文件权限的问题,因为/tmp/mysql.sock不存在,用这样的方法:

      >ln -s /var/lib/mysql/mysql .sock   /tmp/mysql .sock