Question

I have a recently set up VPS with cPanel.

I've made a user and created a database, and now I would like to import a database onto it.

However, when I try I get the error message

#1044 - Access denied for user 'user'@'localhost' to database 'database'

I suspect that this can be fixed with WHM, but I do not feel like trial and error just yet. How would I go about fixing this?

Was it helpful?

Solution

When you import a database using phpMyAdmin, normally you do so by importing a text file with a .sql extension. Here is a section of code that may be in a .sql database backup. In your example, the database you are trying to import is named 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;

When using phpMyAdmin to attempt to import such a file, you will receive an error message similar to:

Error

SQL query:

CREATE DATABASE database;

MySQL said: Documentation
#1044 - Access denied for user 'user'@'localhost' to database 'database'

In this scenario, the cPanel username is user. Because of cPanel's database naming conventions, all database names must begin with the cPanel username followed by _. Using this format you can only creat a database named user_database.

The reason this import failed is because of the following line in the .sql file...

CREATE DATABASE database;

Again, you cannot create a database named database, however you can create a database named user_database.

If you change the line that says: CREATE DATABASE so that it creates: user_database instead of database it will again fail with the following message:

Error

SQL query:

CREATE DATABASE user_database;

MySQL said: Documentation
#1044 - Access denied for user 'user'@'localhost' to database 'user_database'

When using cPanel, databases must be created within the cPanel itself.

Here are the steps to correct thi sissue:

  1. Create the user_database database within cPanel
  2. Comment out the CREATE DATABASE command in my .sql file

    To do this, simply change:

    CREATE DATABASE database;

    to

    -- CREATE DATABASE database;

    You are simply adding dash-dash-space to the front of the line to comment it out so that it will not be executed.

  3. Log into phpMyAdmin, access the user_database database, and then import as normal.

OTHER TIPS

Before dumping your database, grant full access to your new database user created in Cpanel by the same password of that user: grant all on database_name.* to database_user@localhost identified by 'password';

Then you need to modify your .sql file (can use notepad++), comment out the part where says create and use the new database:

-- Database: dbname --
-- CREATE DATABASE IF NOT EXISTS dbname DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
-- USE dbname;

then you should be able to import it to your Cpanel.

To make it official...

The file you're attempting to import probably has something that you don't have permissions for. I would check permissions, then the file you're importing.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top