关键词(Key Words)

ERROR 1006 (HY000): Can’t create database

Starting MySQL. The server quit without updating PID file

MySQL 数据库目录权限问题

开发环境

系 统:CentOS Linux release 7.5.1804 (Core)

MySQL版本:MySQL 5.6

问题场景描述

在某次操作中,我作死用 find 和 chown 命令行修改文件/文件夹的权限和所有者,后来简单粗暴地把 www 文件夹的权限改回755[1],把文件的权限改为644;所有者全部改为root,就在这个时候,一个隐形的大地雷就被我亲手埋下了。。

当我第二天再数据库中建立一个新的数据库的时候,我发现,无论我是使用数据库的普通用户,还是使用 root 用户登录,他都好像开玩笑地告诉我:

ERROR 1006 (HY000): Can't create database

我立马觉得这不对劲,一定是自己埋下的深坑。。我把 ERROR 复制到搜索引擎上一搜索,发现大多数说的是权限,于是想起自己干起的好事,就开始寻找起恢复默认权限的方法(可惜没有备份),这折腾着折腾着我重启了 mysqld 服务,并且令人惊讶的是,shutdown OK,Start failed,又报了一个错误:

Starting MySQL.The server quit without updating PID file

[捂脸][捂脸] 我就开始找 MySQL 的日志,发现没有报错,并且接下来的每次重启都没有记录在日志中,

这让我有种刚掉一个坑还没出来,发现不小心又掉进另外一个坑的感觉。。

但是还好坚持了一个上午,直到下午才发现,原来是同一个问题的导致的:MySQL数据目录可能存在权限问题。在你看完解决方案之后,也许你也就明白了。

解决方案

打开/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 的所有者**注意:**记得把 YOUR_DATADIR 就是我们刚才找到 datadir1$ sudo chown -R mysql:mysql YOUR_DATADIR

修改 datadir 里面文件以及文件夹的权限:建议数据库数据目录的权限为 700 ,文件的为660

文件夹权限修改为700 :1$ sudo find YOUR_DATADIR -type d -exec chmod 700 {} \;文件权限修改为660 :1$ sudo find YOUR_DATADIR -type f -exec chmod 660 {} \;

重启MySQL服务到这里,我们就可以重新再试试1$ sudo /etc/init.d/mysqld restart如果出现 [OK] ,就快大功告成啦!!

重新登陆 MySQL123mysql > create database57EN; Query OK,1 row affected Time: 0.001s

终于跳出坑啦,虽然折腾了这么久,但是这让我对 MySQL 有了更深的认识,从之前只知道如何使用 MySQL,到现在明白原来数据库从服务开始它创建一个.pid 文件(MySQL 服务的进程),原来它存放的数据和日志都在它的 DATADIR 中。我想接下来有必要深入了解的日志,遇到问题时,可以透过日志去发现问题,解决问题。

[1] 文件夹权限 755:

在 Linux 系统中,关于文件/文件夹权限,有三类操作对象(所有者、用户组、公共组)各自有3个权限(读、写、执行),Linux 系统希望通过以下数字规则就能快速知道三类操作对象的对应的权限。

其中,4代表读取的权限,2代表写入的权限,1代表执行的权限;

7=4+2+1

同一操作对象的权限的数字相加,例如:

755 的权限代表,所有者的权限有读写、执行;用户组的权限有读取、执行;公共组的权限有读取、执行。

mysql root用户不存在_MySQL – 解决root用户下仍然出现权限问题-无法建库相关推荐

  1. mysql删去root用户无法登录_MySQL误删root用户导致无法登陆解决方法

    测试环境 删除前 mysql> select user,host,password from mysql.user; +------+-----------+------------------ ...

  2. mysql忘记root密码咋办_MySQL忘记root用户密码怎么办?

    1.首先查看后台是否有mysqld的进程在运行 ps -ef | grep mysqld 2.若存在mysqld进程则杀掉所有的mysqld进程 killall -TERM mysqld 3.通过以下 ...

  3. mysql初始化root 密码是多少_Mysql初始化root密码和允许远程访问

    mysql默认root用户没有密码,输入mysql –u root 进入mysql 1.初始化root密码 进入mysql数据库 mysql>update user set password=P ...

  4. MySQL为其他用户创建数据库_MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限...

    1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...

  5. mysql新建用户并授权_Mysql中新建用户及授权的方法分享

    在项目开发的过程中可能需要开放自己的数据库给别人,但是为了安全不能自己服务器里其他数据库同时开放.那么可以新建一个用户,给该用户开放特定数据库权限 测试环境:Centos 6.3和Mysql 5.3 ...

  6. mysql删除用户的命令_mysql如何删除用户?

    mysql删除用户的方法:1.使用"drop user 用户名;"命令删除:2.使用"delete from user where user='用户名' and host ...

  7. mysql使用教程dos图解_MYSQL使用指南DOS下操作

    一.  连接MYSQL. 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql ...

  8. 删除了mysql的root账户密码是什么_mysql误删root用户或者忘记root密码解决方法

    解决方法一:到其他安装了Mysql的服务器(前提是要知道该服务器上Mysql的root用户密 码),打开[Mysql的安装目录/var/mysql],将其中的user.frm.user.MYD.use ...

  9. mysql root 无法建立数据库_MySQL - 在root用户下你跟我说无法建表!?

    问题场景描述 在某次操作中,我作死用 find 和 chown 命令行修改文件/文件夹的权限和所有者,后来简单粗暴地把 www 文件夹的权限改回755[1],把文件的权限改为644:所有者全部改为ro ...

最新文章

  1. subShell与代码块
  2. mysql sql乱码怎么解决_MYSQL数据库导入SQL文件出现乱码如何解决
  3. 43个热门Flex和ActionScript 3.0 APIs,技巧和工具
  4. 吴恩达深度学习——目标检测
  5. python不同版本切换_Python版本切换,python,的
  6. PG数据库创建视图并授权给新用户
  7. 3dsmax模型导入超图
  8. matlab gui算法,MATLAB GUI实现计算器(设计)
  9. cass打开dwg文件无效_CAD图纸dwg打开提示图形文件无效修复
  10. vue2.x 如何更换网页logo
  11. syslinux linux 启动盘,syslinux启动盘制作
  12. 用python创建微信机器人_手把手教你用Python创建微信机器人
  13. 洛谷题单···(Python)
  14. 17种Vue适用于移动端的ui框架
  15. 目前免费用可用的天气api接口及失效接口
  16. 发现一个好东西-腾讯云函数
  17. uniapp - 电商优购项目
  18. 想成为牛逼网页设计师吗?
  19. C/C++ 的平方和开平方函数
  20. Service粘性启动方式

热门文章

  1. 关于Futaba T 14SG遥控器的配置
  2. matlab 空域滤波,MATLAB--空域滤波学习笔记
  3. Win8 Metro(C#)数字图像处理--2.70修正后的阿尔法滤波器
  4. 将在2020年实现盈利的12个基于AI和ML的Top应用创意
  5. Android 音乐播放器制作(带有通知栏、Widget小挂件)
  6. 【精选】JAVA算法题(二十)
  7. 解决Windows 10输入法无法安装报0x800F0954的问题
  8. 数据科学与大数据技术专业保研
  9. 丁威: 优秀程序员必备技能之如何高效阅读源码(二更)
  10. 学习Linux命令(41)