当您使用 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 本身内创建数据库。
以下是纠正此问题的步骤:
- 在 cPanel 中创建
user_database 数据库
-
注释掉我的 .sql 文件中的 CREATE DATABASE 命令
为此,只需更改:
CREATE DATABASE database;
到
-- CREATE DATABASE database;
您只需将dash-dash-space 添加到该行的前面以将其注释掉,这样它就不会被执行。
登录phpMyAdmin,访问user_database数据库,然后正常导入。