This page will assist you with troubleshooting a MySQL – 1044 “Access Denied” Error Message.
Troubleshooting the MySQL 1044 “Access Denied” Error
When you import a database using phpMyAdmin, generally you are importing a text file with a .sql extension.
Here is a section of code that may be in a .sql database backup. In this example, the database we are trying to import is named Employees.
-- phpMyAdmin SQL Dump -- version 18.104.22.168 -- https://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 employees; -- -------------------------------------------------------- -- -- Table structure for table `employee_list` -- CREATE TABLE IF NOT EXISTS `employee_list` ( `first_name` text NOT NULL, `last_name` 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 employees; MySQL said: Documentation #1044 - Access denied for user 'training'@'localhost' to database 'employees'
In this scenario, my cPanel username is Training. Because of cPanel’s database naming conventions, all database names must begin with the cPanel username followed by an “_”. I cannot create a database named Employees, however I can create a database named Training_employees.
The reason this import failed is because of the following line in the .sql file:
CREATE DATABASE employees
Again, I cannot create a database named employees, however I can create a database named Training_employees. If I change the line that says: CREATE DATABASE so that it creates: training_employees instead of employees it will again fail with the following message:
Error SQL query: CREATE DATABASE training_employees; MySQL said: Documentation #1044 - Access denied for user 'training'@'localhost' to database 'training_employees'
When using cPanel, databases must be created within the cPanel itself. To fix the issue, you will need to:
- Create the: training_employees database within cPanel
- Comment out the: CREATE DATABASE command in my .sql file. To do this, simply change: CREATE DATABASE employees; to — CREATE DATABASE employees; You are simply adding dash dash space to the front of the line to comment it out so that it will not be executed.
- Log into phpMyAdmin, access the training_employees database, and then import as normal.