远程服务器突然断电,重启后发现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!