Как да оправите грешката Error 1044 “Access Denied for User” в phpMyAdmin при импортиране?

Помощ » Обща информация » MySQL » Как да оправите грешката Error 1044 “Access Denied for User” в phpMyAdmin при импортиране?

Управлението на MySQL бази е изминало дълъг път благодарение на инструменти като phpMyAdmin. Използвайки phpMyAdmin, вие можете не само да управлявате съществуващата си база данни, но и да импортирате данни от архив на базата само с няколко щраквания. Понякога обаче може да срещнете проблем, при който резервното копие не успява да се импортира успешно и phpMyAdmin ви представя грешка 1044 „Достъпът е отказан за потребител“. В тази статия ще разгледаме защо възниква този проблем и как да го разрешим.

Какво причинява Error 1044 “Access Denied for User”?

В основата си грешката 1044 сигнализира, че може да има нещо нередно с правата, присвоени на потребителя на вашата база. Както подсказва описанието „Access Denied for User“, потребителят на вашата база няма необходимите привилегии за изпълнение на една или повече от командите, съдържащи се в архива на вашата база.

Грешката за отказан достъп 1044 обикновено е ограничена до акаунти за споделен хостинг, тъй като те често нямат пълен root достъп до сървъра на базата. Като такъв може да срещнете този проблем, ако използвате нашия безплатен хостинг, платен споделен хостинг или нашите semi-dedicated планове. Единственият хостинг пакет, при който не бихте се сблъскали с такъв проблем, е нашият VPS план.

Кои команди са забранени за споделения хостинг?

В повечето среди за споделен хостинг няма да можете да използвате команди, които директно манипулират цели бази данни. Например няма да можете да създавате или изтривате база данни с помощта на SQL команди. Скрийншота по-долу илюстрира какво се случва, когато се опитате да създадете и изтриете база, докато работите в споделена хостинг среда:

В допълнение към създаването и изтриването на база данни, в повечето случаи има и други видове команди, които могат да бъдат ограничени, ако използвате споделен хостинг план. Например няма да можете да създадете нови потребители на базата и да им предоставите права.

Как да поправим грешката „Access Denied for User“?

Първата стъпка в коригирането на Error 1044 “Access Denied for User” е идентифицирането на проблемните SQL команди. След като бъдат идентифицирани, тези команди трябва или да бъдат премахнати, или да се изпълняват по начин, който не би причинил такива проблеми.

Двете най-често срещани SQL команди, които могат да доведат до грешка с отказан достъп, са свързани със създаването и изтриването на цяла база данни. Такива команди често се включват, когато правите резервно копие на вашата база

Вашият бекъп файл на MySQL може да бъде създаден по различни начини. В някои случаи той може да ви бъде предоставен като архив, използвайки .ZIP, .RAR, TAR, .7z или подобно разширение. Ако имате архив, ще трябва да го разархивирате. Самото съдържание трябва да съдържа един или повече файлове с разширение .TXT или .SQL или може би без разширение изобщо. Трябва да можете да отваряте тези файлове с помощта на обикновен текстов редактор. Ако използвате Windows, препоръчваме да отворите файловете чрез Notepad или Notepad ++, потребителите на Mac могат да използват TextEdit, а потребителите на Linux могат да използват nano или vim.

В тази статия ще използваме следния образец:

/******************************************
Create the musicshop database
*****************************************/

DROP DATABASE IF EXISTS musicshop;
CREATE DATABASE musicshop;
USE musicshop;

– create the tables
CREATE TABLE categories (
categoryID INT(11) NOT NULL AUTO_INCREMENT,
categoryName VARCHAR(255) NOT NULL,
PRIMARY KEY (categoryID)
);

CREATE TABLE products (
productID INT(11) NOT NULL AUTO_INCREMENT,
categoryID INT(11) NOT NULL,
productCode VARCHAR(10) NOT NULL UNIQUE,
productName VARCHAR(255) NOT NULL,
listPrice DECIMAL(10,2) NOT NULL,
PRIMARY KEY (productID)
);

CREATE TABLE orders (
orderID INT(11) NOT NULL AUTO_INCREMENT,
customerID INT NOT NULL,
orderDate DATETIME NOT NULL,
PRIMARY KEY (orderID)
);

– insert data into the database
INSERT INTO categories VALUES
(1, ‘Guitars’),(2, ‘Basses’),(3, ‘Drums’);

Ако изпълним този код в phpMyAdmin ще получим грешка 1044. Това е така защото се опитваме да създадем и изтрием база през SQL на споделен хостинг план. Кода, който причинява тази грешка е:

DROP DATABASE IF EXISTS musicshop;
CREATE DATABASE musicshop;
USE musicshop;

Тъй като не можем да стартираме тези команди чрез phpMyAdmin, ще трябва да ги изпълняваме на ръка, като използваме секцията Database Manager на хостинг контролния панел:

  • Първата команда DROP DATABASE IF EXISTS musicshop; ни интруктира да изтрием базата musicshop ако съществува.
  • Втората команда CREATE DATABASE musicshop; ни инструктира да създадем базата musicshop
  • Третата команда USE musicshop; ни кара да проверим дали musicshop е активната база. Можем да направим това като я отворим в phpMyAdmin.

След като проблемните команди сa изпълнени ръчно, трябва да ги премахнем от файла. Използвайки избрания от вас текстов редактор, премахнете командите, описани по-рано в статията, и след това запазете промените. В нашия пример крайният резултат ще бъде файл със следното съдържание:

/******************************************
Create the musicshop database
*****************************************/

– create the tables
CREATE TABLE categories (
categoryID INT(11) NOT NULL AUTO_INCREMENT,
categoryName VARCHAR(255) NOT NULL,
PRIMARY KEY (categoryID)
);

CREATE TABLE products (
productID INT(11) NOT NULL AUTO_INCREMENT,
categoryID INT(11) NOT NULL,
productCode VARCHAR(10) NOT NULL UNIQUE,
productName VARCHAR(255) NOT NULL,
listPrice DECIMAL(10,2) NOT NULL,
PRIMARY KEY (productID)
);

CREATE TABLE orders (
orderID INT(11) NOT NULL AUTO_INCREMENT,
customerID INT NOT NULL,
orderDate DATETIME NOT NULL,
PRIMARY KEY (orderID)
);

– insert data into the database
INSERT INTO categories VALUES
(1, ‘Guitars’),(2, ‘Basses’),(3, ‘Drums’);

След като импортираме променения файл трябва да получим съобщение че SQL заявките са изпълнени успешно:

Грешката продължава да се появява. Какъв друг може да е проблема?

В някои редки случаи можете да продължите да получавате грешката „Access denied for user“ дори след като сте направили описаните промени. Ако това стане Ви препоръчваме да разгледате целия код във файла за други редове с CREATE DATABASE или DROP DATABASE.

В зависимост от това как е направен бекъпа на базата, може да инструктира phpMyAdmin да създава не една, а множество бази данни наведнъж. В тези ситуации ще трябва да използвате командите CREATE DATABASE като разделители и да разделите бекъп файла на няколко файла, където всеки файл е отговорен за възстановяването на една база.

Заключение

Докато грешката грешката Error 1044 “Access Denied for User” може да звучи сериозно и трудно за разрешаване, в повечето случаи всъщност са необходими само няколко малки редакции, за да се реши проблемът. Всичко, от което се нуждаете, е няколко минути работа, търпение и обикновен текстов редактор. И ако всичко друго се провали, винаги можете да се свържете с екипа за техническа поддръжка като отворите запиване за допълнителна помощ.

Готов ли си да създадеш своя сайт?

Pin It on Pinterest

Share This