远程服务器突然断电,重启后发现mysql无法启动了;

提示:

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

搜罗了很多帖子,典型的如

my.cnf配置文件datadir项配置错误或被启动脚本篡改

进程里已经存在mysql进程

mysql的数据存储目录权限不足

覆盖安装或升级mysql后,残余数据的影响

selinux的问题,centos下最容易出现

mysql运行状态下删除binary日志后重启失败

试验了一下,都不在解决范围之内;

只能选择彻底删除mysql 重新安装

rpm -qa | grep -i mysql  #查找已安装mysql

rpm -e MySQL-client-5.6.10-1.rhel5.x86_64 MySQL-server-5.6.10-1.rhel5.x86_64 MySQL-devel-5.6.10-1.rhel5.x86_64  #删除

sudo find / -iname mysql #查找mysql散落文件

删除完毕后重新安装

sudo rpm -ivh MySQL-server-5.6.10-1.rhel5.x86_64.rpm

sudo rpm -ivh MySQL-client-5.6.10-1.rhel5.x86_64.rpm

sudo rpm -ivh MySQL-devel-5.6.10-1.rhel5.x86_64.rpm

安装server时出现错误;

Preparing...                ########################################### [100%]

1:MySQL-server           ########################################### [100%]

2016-01-27 10:45:30 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2016-01-27 10:45:30 1069 [Note] InnoDB: The InnoDB memory heap is disabled

2016-01-27 10:45:30 1069 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins

2016-01-27 10:45:30 1069 [Note] InnoDB: Compressed tables use zlib 1.2.3

2016-01-27 10:45:30 1069 [Note] InnoDB: CPU does not support crc32 instructions

2016-01-27 10:45:30 1069 [Note] InnoDB: Using Linux native AIO

/usr/sbin/mysqld: Can't create/write to file '/tmp/ibvBHozg' (Errcode: 13 - Permission denied)

2016-01-27 10:45:30 7f737e25b720  InnoDB: Error: unable to create temporary file; errno: 13

2016-01-27 10:45:30 1069 [ERROR] Plugin 'InnoDB' init function returned error.

2016-01-27 10:45:30 1069 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

2016-01-27 10:45:30 1069 [ERROR] Unknown/unsupported storage engine: InnoDB

2016-01-27 10:45:30 1069 [ERROR] Aborting

tmp目录出现权限问题,很奇怪,tmp目录权限一直是开放的,突然有这个问题

chmod 1777 /tmp

第一次看到 1777 权限,百度了下还不是很理解;

1777: drwxrwxrwt             /dir

0777: drwxrwxrwx             /dir

在列文件或目录时,有时会遇到“t”位。“t”代表了粘性位。如果在一个目录上出现“t”位,这就意味着该目录中的文件只有其属主才可以删除,即使某个属组用户具有和属主同等的权限。不过有的系统在这一规则上并不十分严格。如果在文件列表时看到“t”,那么这就意味着该脚本或程序在执行时会被放在交换区(虚存)。

原理我说不上来,另外补充s,i权限

s:文件属主和组设置SUID和,文件在被设置了s权限后将以root身份执行。在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能正真生效(c h m o d命令不进行必要的完整性检查,即使不设置x权限就设置s权限,chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)。Linux修改密码的passwd便是个设置了SUID的程序,普通用户无读写/etc/shadow文件的权限确可以修改自己的密码。

-rwsr-xr-x 1 root root 32988 2008-12-08 17:17 /usr//passwd

我们可以通过字符模式设置s权限:chmod a+s filename

i:不可修改权限  例:chattr u+i filename 则filename文件就不可修改,无论任何人,如果需要修改需要先删除i权限,用chattr -i filename就可以了。查看文件是否设置了i权限用lsattr filename。

权限赋好后重新安装。。success!