解决方案
-
打开/etc/my.cnf
在 [mysqld] 中找到两个信息:
-
datadir
—— 这是你的数据库存取数据的地方 , 例如我的是datadir = /www/server/data
,/www/server/data
就是我的数据目录; -
log-bin
—— 这是存在日志的地方,不过有可能只看到log-bin=mysql-bin
,这里默认没有修改的话,mysql-bin
是在上面的datadir
。
-
-
先看错误日志
打开到你的
datadir
文件夹位置 , 有一个 ***.err 的文件,这是 MySQL 的一个错误日志,你可以使用 vim 打开查看是否有什么错误的信息;
下面是关键的两步,也是导致出现上面两个问题的原因:
- MySQL每次开始服务的时候要先在 DATADIR 中创建一个 ****.pid 文件,关闭服务的时候就会删除它;因为上次这里面整个文件夹(包括文件夹中的内容)的所有者被我不小心修改为root了,因此 MySQL 没有权限往其中新建一个 ****.pid 文件 ,因此报了第二个的错误;
- 另外,为什么我一开始可以登陆 MySQL ,却在root用户的时候居然无法进行新建数据库的操作呢?我猜想可能是因为,我之前的文件夹的权限是755,文件的是644的原因;也就是用户组和公共组都可以读取,但无法写入,所以才会报第一个错误!
-
修改的 datadir 的所有者
$ sudo chown -R mysql:mysql YOUR_DATADIR 复制代码
**注意:**记得把 YOUR_DATADIR 就是我们刚才找到
datadir
-
修改 datadir 里面文件以及文件夹的权限:
建议数据库数据目录的权限为 700 ,文件的为660
-
文件夹权限修改为700 :
$ sudo find YOUR_DATADIR -type d -exec chmod 700 {} ; 复制代码
-
文件权限修改为660 :
$ sudo find YOUR_DATADIR -type f -exec chmod 660 {} ; 复制代码
-
重启MySQL服务
到这里,我们就可以重新再试试
$ sudo /etc/init.d/mysqld restart 复制代码
如果出现 [OK] ,就快大功告成啦!!
-
重新登陆 MySQL