【问题标题】:mysql> create database test; ERROR 1006 (HY000): Can't create database 'test' (errno: 2)mysql> 创建数据库测试;错误 1006 (HY000): 无法创建数据库 'test' (errno: 2)
【发布时间】:2016-11-14 04:09:16
【问题描述】:

在我的root帐户下登录mysql后无法创建数据库。我是否必须创建一个管理员帐户才能这样做?另外,由于某种原因,我的 StartUp 文件没有安装(出现错误)。我不确定这是否会影响其他任何事情,因为当我在终端中键入“mysql”时 mySQL 会启动。

当我输入时

mysql> SELECT Host, User FROM mysql.user;
+---------------------+------+
| Host                | User |
+---------------------+------+
| 127.0.0.1           | root |
| ::1                 | root |
| myname-mac.att.net  |      |
| myname-mac.att.net  | root |
| localhost           |      |
| localhost           | root |
+---------------------+------+

我不明白。我好像有多个 root 用户,我不知道 ::1 是什么意思。

编辑:我的数据库目前看起来像这样。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.02 sec)

我输入什么作为我的数据库名称并不重要。我什至试着称它为“苹果”。

【问题讨论】:

  • 默认情况下,已经有一个名为 test 的数据库。要查看它,请尝试使用SHOW DATABASES;。您是否尝试过创建一个不同名称的表?
  • 我尝试了其他名称。它没有用。见上面的编辑。
  • 尝试重新启动您的计算机,然后再试一次。

标签: mysql


【解决方案1】:

可能是空间问题。 关注这个

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

  3. 通过df -hk /var 检查/var大小

  4. 如果 used 是 100% ,那么你必须找到正在填充的文件。

  5. 在/var中查找大文件

    find /var/ -type f -size +100000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
  6. 看看你可以删除哪个文件然后重启mysql进程

  7. /etc/init.d/mysql restart

让我知道这是否有效:)

【讨论】:

    【解决方案2】:

    如果你在 macosx 上并且安装了系统偏好设置面板,那应该会显示类似

    的消息
    the following directory is not owned by _mysql user - "/usr/local/msyql/data"
    

    一旦您知道该路径,您就可以执行以下操作:

    sudo chown -R mysql:mysql /usr/local/mysql/data
    
    sudo chown -R mysql:mysql <path>
    

    【讨论】:

    • 请注意,您需要先创建一个data 目录,然后为某些人执行此操作。在 ubuntu 中,它是 /var/lib/mysql/data
    【解决方案3】:

    您有多个域的一个根用户。这意味着您可以从指定的域连接并在该数据库上运行查询。

    如果您只想显示一个,请为该域提供 '%' 并删除所有其他域,尽管不建议这样做。仅从 localhost 保存 root 用户以获取运行权限,并为从外部运行查询创建受限用户。

    至于测试数据库错误,它发生在全新安装时。只需重新启动 mysql 服务器(停止/启动进程)或计算机。

    另外,请确保您拥有完整的权利

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'thedomainyourunfrom/localhost/%' WITH GRANT OPTION;
    

    这将赋予您的 root 用户对服务器中所有数据库的完全权限

    osx 手册http://dev.mysql.com/doc/mysql-macosx-excerpt/5.0/en/macosx-installation.html

    【讨论】:

    • 对不起,我是新手。我确实在 . 上授予了所有权限到 'root'@'localhost';同花顺特权;但这并没有做任何事情。根据您的建议,我想我会重新启动计算机。
    • 'root'@'localhost' 和 'root'@'127.0.0.1' 确保一切正常。前提是您在服务器上本地运行 SQL 命令。让我知道重启是如何工作的。
    • 所以我重新启动了我的计算机,现在我什至无法启动 mysql。当我在计算机中输入“mysql”时,它显示 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    • 编辑:我刚刚通过其他一些stackoverflow帖子建议尝试了 sudo /usr/local/mysql/bin/mysqld_safe 并且它有效?对吗?
    • 根据安装手册,这是一个必要的步骤。奇怪,我从没想过需要操作系统 su 来启动它dev.mysql.com/doc/mysql-macosx-excerpt/5.0/en/…
    【解决方案4】:

    作为附加资源,您可以尝试另外两件事:

    1. 找出 MySQL 的数据文件夹并“chown”它,以便 mysql 可以正确写入。例如,如果您的 MySQL 的数据文件夹是 /usr/local/mysql/data/,您可以通过键入命令 chown -R mysql:mysql /usr/local/mysql/data/

    2. 来“chown”它
    3. 如果您刚刚安装了 MySQL 服务器,请尝试重新启动计算机。有时安装程序无法为程序提供正确的文件访问权限

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 1970-01-01
      • 2016-08-28
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 2011-08-27
      • 2013-01-17
      相关资源
      最近更新 更多