【问题标题】:Cannot import database using PhpMyAdmin with Cpanel on a VPS?无法在 VPS 上使用 PhpMyAdmin 和 Cpanel 导入数据库?
【发布时间】:2012-12-10 00:46:28
【问题描述】:

我最近使用 cPanel 设置了 VPS。

我已经创建了一个用户并创建了一个数据库,现在我想将一个数据库导入到它上面。

但是,当我尝试时,我收到了错误消息

#1044 - 用户 'user'@'localhost' 拒绝访问数据库 'database'

我怀疑这可以通过 WHM 解决,但我现在还不想反复试验。 我该如何解决这个问题?

【问题讨论】:

  • 导入是什么意思?是通过phpMyAdmin报错吗?
  • phpmyadmin 的导入选项。您上传您的数据库,它会被插入到您当前所在的数据库中——至少通常情况下是这样。出于某种原因,phpmyadmin 这次尝试创建一个新数据库。
  • 那是因为您尝试导入的文件有一行来创建数据库。您尝试导入的文件可能包含您没有权限的内容。我会检查权限,然后是您要导入的文件。
  • 我拥有数据库的 root 访问权限 - 除非你指的是别的?
  • 请使用SHOW GRANTS FOR user 的输出更新您的答案。 Doc.

标签: mysql phpmyadmin cpanel vps whm


【解决方案1】:

在转储您的数据库之前,请授予使用该用户相同密码在 Cpanel 中创建的新数据库用户的完全访问权限: grant all on database_name.* to database_user@localhost identified by 'password';

然后你需要修改你的.sql文件(可以使用notepad++),注释掉创建和使用新数据库的部分:

-- 数据库:dbname --
-- 如果不存在则创建数据库dbname 默认字符集 latin1 COLLATE latin1_swedish_ci;
-- 使用dbname
那么您应该可以将其导入您的 Cpanel。

【讨论】:

    【解决方案2】:

    当您使用 phpMyAdmin 导入数据库时​​,通常是通过导入带有 .sql 扩展名的文本文件来实现的。这是可能在 .sql 数据库备份中的一段代码。在您的示例中,您尝试导入的数据库名为 database。

    -- phpMyAdmin SQL Dump
    -- version 2.11.9.5
    -- http://www.phpmyadmin.net
    --
    -- Host: localhost
    -- Generation Time: Apr 02, 2010 at 08:01 AM
    -- Server version: 5.0.81
    -- PHP Version: 5.2.6
    
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    
    CREATE DATABASE database;
    -- --------------------------------------------------------
    --
    -- Table structure for table `table`
    --
    
    CREATE TABLE IF NOT EXISTS `table` (
    `column1` text NOT NULL,
    `column2` text NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    

    当使用 phpMyAdmin 尝试导入此类文件时,您将收到类似以下的错误消息:

    Error
    
    SQL query:
    
    CREATE DATABASE database;
    
    MySQL said: Documentation
    #1044 - Access denied for user 'user'@'localhost' to database 'database'
    

    在这种情况下,cPanel 用户名是user。由于 cPanel 的数据库命名约定,所有数据库名称必须以 cPanel 用户名开头,后跟 _。使用这种格式你只能创建一个名为user_database的数据库。

    此导入失败的原因是 .sql 文件中的以下行...

    CREATE DATABASE database;
    

    同样,您不能创建一个名为 database 的数据库,但是您可以创建一个名为 user_database 的数据库。

    如果您更改显示:CREATE DATABASE 的行,使其创建:user_database 而不是 database,它将再次失败并显示以下消息:

    Error
    
    SQL query:
    
    CREATE DATABASE user_database;
    
    MySQL said: Documentation
    #1044 - Access denied for user 'user'@'localhost' to database 'user_database'
    

    使用 cPanel 时,必须在 cPanel 本身内创建数据库。

    以下是纠正此问题的步骤:

    1. 在 cPanel 中创建 user_database 数据库
    2. 注释掉我的 .sql 文件中的 CREATE DATABASE 命令

      为此,只需更改:

      CREATE DATABASE database;

      -- CREATE DATABASE database;

      您只需将dash-dash-space 添加到该行的前面以将其注释掉,这样它就不会被执行。

    3. 登录phpMyAdmin,访问user_database数据库,然后正常导入。

    【讨论】:

      【解决方案3】:

      为了正式...

      您尝试导入的文件可能包含您没有权限的内容。我会检查权限,然后是您要导入的文件。

      【讨论】:

        猜你喜欢
        • 2021-05-26
        • 2012-12-18
        • 2013-12-18
        • 1970-01-01
        • 2013-04-21
        • 2013-11-04
        • 2018-10-14
        • 2011-09-22
        • 2019-06-29
        相关资源
        最近更新 更多