查看MySQL错误日志 .err文件
cd /usr/local/mysql/data
# .err
InnoDB initialization has started.
mmap(137363456 bytes) failed; errno 12 # 失败; errno 12
Cannot allocate memory for the buffer pool # InnoDB:无法为缓冲池分配内存
Plugin initialization aborted with error Generic error. # 插件'InnoDB'init函数返回错误。
Failed to initialize DD Storage Engine # 插件'InnoDB'注册为STORAGE ENGINE失败
Data Dictionary initialization failed. # 未知/不支持的存储引擎:InnoDB
Aborting # 中止
原因是内存不够用,内存不足造成的。也可以说你的服务器配置过低,需要考虑服务器配置升级的问题。
可以用"free -m"命令来查看自己服务器的内存
修改mysql配置文件my.cnf
# innodb_buffer_pool_size:主要作用是缓存innodb表的索引,数据,插入数据时的缓冲
# mysql默认给InnoDB分配的内存 默认值:128M
# 专用mysql服务器设置此值的大小: 系统内存的70%-80%最佳
# 如果你的系统内存不大,查看这个参数,把它的值设置小一点
innodb_buffer_pool_size = 8M
可能已经存在 mysqld 进程
# 查看是否有这个进程,如果有杀死掉
ps -ef | grep mysqld
pkill -9 mysqld
数据目录mysql用户是否有权限
chown -R mysql.mysql /usr/local/mysql/data
可能有上次安装mysql的残留
# 查看mysql的二进制目录,看是否存在mysqlbinlog.index,有的话删掉
find / -name mysql-binlog*
mysql 在启动的时候会去寻找默认的 配置文件 /etc/my.cnf 这个目录下的 datadir 要指定数据目录
# 如果没有,那么在 my.cnf 里面添加 datadir=/usr/local/mysql/data
skip-federated字段问题
检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉
防火墙原因
# centos 会默认开启selinux
vim /etc/selinux/config
SELINUX=disabled