我最近用 cPanel 设置了 VPS。
我已经创建了一个用户并创建了一个数据库,现在我想将一个数据库导入到它上面。
但是,当我尝试时,我收到错误消息
#1044 - 用户 'user'@'localhost' 拒绝访问数据库 'database'
我怀疑这可以通过 WHM 解决,但我现在还不想试错。我将如何解决这个问题?
我最近用 cPanel 设置了 VPS。
我已经创建了一个用户并创建了一个数据库,现在我想将一个数据库导入到它上面。
但是,当我尝试时,我收到错误消息
#1044 - 用户 'user'@'localhost' 拒绝访问数据库 'database'
我怀疑这可以通过 WHM 解决,但我现在还不想试错。我将如何解决这个问题?
当您使用 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 本身内创建数据库。
以下是纠正此问题的步骤:
user_database
在 cPanel 中创建数据库注释掉CREATE DATABASE
我的 .sql 文件中的命令
为此,只需更改:
CREATE DATABASE database;
到
-- CREATE DATABASE database;
您只需添加dash-dash-space
到该行的前面以将其注释掉,这样它就不会被执行。
登录 phpMyAdmin,访问user_database
数据库,然后正常导入。
在转储数据库之前,请授予对在 Cpanel 中使用该用户相同密码创建的新数据库用户的完全访问权限:
grant all on database_name.* to database_user@localhost identified by 'password';
然后你需要修改你的.sql文件(可以使用notepad++),注释掉创建和使用新数据库的部分:
-- Database:
dbname
--
-- CREATE DATABASE IF NOT EXISTS dbname
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
-- USE dbname
;
那么您应该可以将其导入到您的 Cpanel 中。
为了正式...
您尝试导入的文件可能包含您没有权限的内容。我会检查权限,然后检查您要导入的文件。