Подтвердить что ты не робот

Команда обновления запрещена для пользователя

Я использовал этот бесплатный хостинг-сайт для разработки и тестирования.

Я не мог использовать команду UPDATE MySQL для изменения значений базы данных, даже если пользователю разрешено использовать все команды из cPanel.

Затем, я тестировал то же самое со своим пользователем по умолчанию, он все равно не сработает. Однако он отлично работает в моей системе.

Ошибка MySQL

UPDATE command denied to user 'test'@'localhost' for table 'content'

Другие команды работают нормально.

Почему это происходит? И как это можно предотвратить? Или любое решение для этого?

И я очень уверен, что у пользователей есть разрешение использовать команду UPDATE, потому что я могу использовать phpMyAdmin с тем же пользователем и изменять поля MySQL.

Я не понимаю, почему некоторые команды MySQL из PHP запрещены для пользователя, которому были предоставлены все привилегии и он может делать все через phpMyAdmin. Учитывая, что script, phpMyAdmin и хост SQL находятся на одном сервере.

4b9b3361

Ответ 1

Для всех, кто пробовал ответить на этот вопрос, я искренне благодарен. Я нашел проблему и решение.

мой запрос sql выглядит следующим образом

UPDATE `dblayer`.`test` SET `title` = 'hello a' WHERE `test`.`id` =1;

который я получил от phpmyadmin, и он отлично работает в моей системе. Но когда я работаю на серверах, он не работает, и он говорит, что команда denied может быть вызвана тем, что

`dblayer`.`test`

Я пытаюсь выбрать таблицу глобально (или что-то в этом роде, я не уверен) но если мой запрос sql

UPDATE `test` SET `title` = 'hello a' WHERE `test`.`id` =1;

он работает и на моем сервере.

Ответ 2

У вашего пользователя нет правильных разрешений. Вам нужно предоставить ему доступ к команде UPDATE, например:

GRANT UPDATE ON database.* TO [email protected]'localhost' IDENTIFIED BY 'password';

Если вы используете графический инструмент для управления базой данных - например, PHPMyAdmin или SQLYog и т.д. - вы также сможете использовать эти инструменты для включения этих разрешений.

Ответ 3

Как все говорили, это проблема с разрешением. Я уверен, что вы, вероятно, проверили, но на всякий случай. После входа в phpmyadmin запустите следующее:

SELECT USER(); 

Это должно выплюнуть 'test' @'localhost', как указано во всех комментариях выше

Затем запустите

SHOW GRANTS FOR  'test'@'localhost'

Это должно дать вам все привилегии для этого пользователя. Когда вы получите результаты, выберите "Параметры", "Полный текст" и нажмите "Искать", чтобы получить полный текст.

Убедитесь, что разрешения на выходе имеют что-то вроде этого:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `your_database`.* TO 'test'@'localhost'

Возможно, вы не сможете получить GRANT ALL на некоторых настройках хостинга, но до тех пор, пока у вас есть INSERT, UPDATE, DELETE, вы обязательно сможете обновить данные.

Ответ 4

У меня была та же проблема, разрешение было правильным, но оно работало в некоторых средах, а не в других. Я использовал имя таблицы, например

scheme.TABLE_NAME.

Без изменения разрешения, но используя только

table_name

работал во всех средах.

Ответ 5

моя ошибка sql - это команда UPDATE, лишенная пользователя 'test' @'localhost' для содержимого таблицы

почему это происходит? И как это предотвратить? Или любое решение для это?

Это происходит из-за того, что он говорит о том, что это происходит: пользователь test не имеет разрешений на обновление в таблице content. Что-то вроде этого должно предоставить пользователю требуемое разрешение:

GRANT UPDATE ON database.content TO [email protected]'localhost' IDENTIFIED BY 'password';

* пароль выше - это просто место. Вы должны использовать реальный.

Ответ 6

Иногда это проблема, чувствительная к регистру.

MySQL также говорит, что доступ запрещен, даже если таблица недоступна. Убедитесь, что у вас нет проблем с регистрацией.

Ответ 7

Предоставить полный доступ для проверки пользователя с помощью ip как localhost.Проверьте таблицу пользователя из mysql db.

Войдите в систему как пользователь root и войдите в базу данных mysql, а затем в таблицу user. Вы будете находить текущие привилегии вашего тестового пользователя.

Ответ 8

С mysql вы можете просто сделать    SELECT * mysql.user

Посмотрите на привилегии, а затем обновите те, которые вы хотите. Мне нравится более лично, используя приведенные выше команды, потому что я могу видеть все мои параметры, доступные в этой таблице.

 UPDATE  mysql.user 
 SET  Insert_priv =  'Y',
 Update_priv =  'Y' 
 WHERE  user.Host =  'localhost' AND  user.User =  'test';

После обновления привилегий я заметил, что мне придется перезапустить сервер mysql для просмотра клиентом:

 /etc/init.d/mysql restart 

Тогда он будет работать нормально

Ответ 9

A UPDATE command denied ошибка может на некоторых веб-хостах быть результатом достижения предела базы данных MySQL.