Команда обновления запрещена для пользователя
Я использовал этот бесплатный хостинг-сайт для разработки и тестирования.
Я не мог использовать команду UPDATE
MySQL для изменения значений базы данных, даже если пользователю разрешено использовать все команды из cPanel.
Затем, я тестировал то же самое со своим пользователем по умолчанию, он все равно не сработает. Однако он отлично работает в моей системе.
Ошибка MySQL
UPDATE command denied to user 'test'@'localhost' for table 'content'
Другие команды работают нормально.
Почему это происходит? И как это можно предотвратить? Или любое решение для этого?
И я очень уверен, что у пользователей есть разрешение использовать команду UPDATE
, потому что я могу использовать phpMyAdmin с тем же пользователем и изменять поля MySQL.
Я не понимаю, почему некоторые команды MySQL из PHP запрещены для пользователя, которому были предоставлены все привилегии и он может делать все через phpMyAdmin. Учитывая, что script, phpMyAdmin и хост SQL находятся на одном сервере.
Ответы
Ответ 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.