ERROR 1006(HY000)无法创建数据库(错误号:13)MySQL 5.6.12

时间:2013-09-10 13:04:06

标签: mysql mysql-5.6

我在创建数据库时遇到问题,导致出现以下错误。

mysql> show grants for 'admin'@'%';
+---------------------------------------------------------------------------------------------------------------------------------+
| Grants for admin@%                                                                                                              |
+---------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> create database abc;
ERROR 1006 (HY000): Can't create database 'abc' (errno: 13)

这是我的用户表。

mysql> select host, user from mysql.user;
+-------------+-------+
| host        | user  |
+-------------+-------+
| %           | admin |
| 127.0.0.1   | root  |
| ::1         | root  |
| IVM-MMC-DGW | root  |
| localhost   | admin |
| localhost   | root  |
+-------------+-------+
6 rows in set (0.00 sec)


mysql> show grants;
+-----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for admin@localhost                                                                                                              |
+-----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' WITH GRANT OPTION |
+-----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

我可以在现有数据库中创建和删除表。

数据目录已具有mysql:mysql权限,登录用户也有权创建新数据库。

这里缺少什么配置?

13 个答案:

答案 0 :(得分:28)

MySQL数据目录可能存在权限问题。您可以尝试按如下方式设置权限(调整数据目录的路径)

chown -R mysql:mysql /usr/local/mysql/data

答案 1 :(得分:19)

这可能是由于MySQL拒绝了许可。虽然您设置了datadir=/drbd0/mysql/data,但默认设置为MySql set socket = /var/lib/mysql/mysql.sock,因此您应该拥有该目录的权限。

less /etc/group

然后

less /etc/passwd

找到mysql用户名和组名,默认情况下,它是mysql组中的mysql用户。

更改为mysql目录,可能是/var/lib/mysql,然后键入cd ..以上一个目录。

chown -R mysql:mysql ./mysql/

如果您将组和用户权限称为differenty

,请将mysql:mysql替换为不同的内容

答案 2 :(得分:11)

可能是空间问题。 按照这个

  1. 检查/ var / lib / mysql
  2. 中的.err日志
  3. 如果日志说的话 “[错误]无法启动服务器:无法创建PID文件:设备上没有剩余空间”

  4. 按df -hk / var

  5. 检查/ var size
  6. 如果使用的是100%,那么你必须找到填充的文件。

  7. 在/ var中找到大文件 find / var / -type f -size + 100000k -exec ls -lh {} \; | awk'{print $ 9“:”$ 5}'

  8. 查看您可以删除的文件,然后通过

  9. 重新启动mysql进程
  10. /etc/init.d/mysql restart
  11. 让我知道这是否有效:)

答案 3 :(得分:7)

对于Mac OS,请使用此命令

sudo chown -R mysql:mysql /usr/local/mysql*

用户mysql应具有对mysql数据目录的写访问权。

答案 4 :(得分:5)

sudo chown -R mysql:mysql / var / lib / mysql /

答案 5 :(得分:1)

在/etc/mysql/my.cnf中,设置datadir = / home / mysql_data,其中 是数据库文件实际位于您的机器上的位置

答案 6 :(得分:1)

如果你在CentOS上,请关闭SELinux。

检查Turning off or disabling SELinux

答案 7 :(得分:1)

如果您移动mysql文件夹,则重启mysql,它可以正常工作

答案 8 :(得分:1)

  1. 检查您的mysql数据目录权限 默认情况下,数据目录在'/etc/my.conf'中配置 或使用mysqladmin -uroot -p variables | grep datadir查找目录 默认情况下可能为/var/lib/mysql/,并使所有者用户和群组成为可能 是mysql。 chown -R mysql:mysql /usr/local/mysql/data

  2. 如果步骤1尚未解决,可能是因为您SELinux,请尝试turn off it

    • 测试SELinux是否正在运行。 selinuxenabled && echo enabled || echo disabled
    • 暂时关闭SELinux。 echo 0 > /selinux/enforce
    • 完全关闭SELinux。更改配置SELINUX=disabled,然后重新启动。

    在不同的操作系统中,SELinux的配置目录可能不同。

答案 9 :(得分:1)

同样的问题,在我的情况下,我更改了my.cf上的默认目录,而selinux已阻止它。

测试:

setenforce 0

修复(CentOS)

添加上下文并使其永久

semanage fcontext -a -s system_u -t mysqld_db_t "/var/data/mysql(/.*)?" restorecon -Rv /var/data/mysql

来源:https://naveensnayak.wordpress.com/2016/01/14/changing-mysql-data-directory-centos-7/

答案 10 :(得分:0)

运行WAMP并且我遇到了同样的问题,选择了传统的停止并启动所有服务,这对我来说也是如此。之后我能够创建数据库,真的不知道为什么我一开始就无法创建它,因为我没有空间或权限问题。嗯,我希望这有助于WAMP用户

答案 11 :(得分:0)

在我的情况下,这是MySQL数据目录所有者的问题,正如其他人所建议的那样。但是,我服务器上的设置非常罕见,使用了不同的目录,因此这里是更详细的解决方案:

  1. 查找MySQL数据目录

grep 'datadir' $(find /etc -iname my.cnf 2>/dev/null) | awk '{print $3}'

如果MySQL配置正确,则返回例如/var/lib/mysql

如果未返回任何结果,请尝试使用

在整个文件系统中进行搜索

grep 'datadir' $(find / -iname my.cnf 2>/dev/null) | awk '{print $3}'(这可能需要很长时间)

崩溃:

find /etc -iname my.cnf 2>/dev/null/etc中忽略错误找到了名为my.cnf的文件

grep 'datadir' /etc/mysql/my.cnf在上一步找到的文件中找到数据目录

awk '{print $3}'打印来自标准输入的第三列

  1. 修复所有权

sudo chown -R mysql:mysql MYSQLDIR用步骤1中返回的目录路径替换MYSQLDIR

答案 12 :(得分:0)

我最近遇到了这个问题。未创建数据库。它抛出错误。后来我发现磁盘已100%充满,这是由于发生这种情况。权限都还可以。