刚编译完 MySQL 遇到这个问题?? 别着急,下面是本人总结,据说看完的99%都解决了!
1、你初始化数据库了吗??[code]/usr/local/mysql/bin/mysql_install_db [/code]
2016-05-25 19:56:18 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2016-05-25 19:56:18 [ERROR] The data directory needs to be specified.
我的是 MySQL 5.7,新版已经改成用 mysqld --initialize 来初始化数据库了[code]/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql[/code]注意:
1)后面的参数一定要加上,--user代表运行用户,--basedir代表MySql安装目录,--datadir代表数据库数据所在目录,每个人的配置不一样,根据自己的编译参数修改一下。
2)执行前,请先清空编译前指定的datadir,默认是在安装目录的data/(我编译时指定在了/data/mysql),否则会报如下错误:
--initialize specified but the data directory has files in it. Aborting.
2016-05-25T12:07:27.006980Z 0 [ERROR] Aborting
2、可能是 datadir 目录没有写的权限
[code]chown -R mysql:mysql /data/mysql && chmod -R 755 /data/mysql[/code]
3、错误日志文件没有权限(根据你的编译参数和my.cnf查看你的错误文件路径)
[code][chown -R mysql:mysql /var/log/mysqld.log && chmod -R 755 /var/log/mysqld.log[/code]
4、可能进程里已经存在mysql进程[code]ps -ef | grep mysql[/code]如果有使用 “kill -9 进程号” 杀死,然后重新启动mysqld!
5、可能是第二次在机器上安装MySQL,有残余数据影响了服务的启动。
清空之前的 datadir 目录,和MySQL安装目录,如果存在mysql-bin.index,就赶快把它删除掉吧。
6、MySQL在启动时没有指定配置文件时会使用 /etc/my.cnf 配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
请在[mysqld]下设置这一行:[code]datadir = /data/mysql[/code]
7、skip-federated字段问题
检查一下/etc/my.cnf文件中有没有没被注释掉的 skip-federated 字段,如果有就立即注释掉吧。
8、selinux惹的祸,如果是centos系统,默认会开启selinux
关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。