У меня есть таблица базы данных, из которой, когда я выбираю данные с именем пользователя и паролем, он работает, но когда я вставляю некоторые данные в эту таблицу с одинаковым именем пользователя и паролем, это показывает мне ошибку
INSERT command denied to user 'username'@'localhost' for table 'tablename'
Я искал с помощью Google, а у кого-то была такая же проблема с размером db. Я проверил свой db, и когда я перехожу непосредственно к phpmyadmin для вставки данных в таблицу, он работает, но когда я вызываю запрос в таблицу из скрипта PHP, это дает мне ошибку.
Это проблема с разрешениями. Войдите в приглашение MySQL с пользователем, которым работает приложение, и введите этот запрос:
SHOW GRANTS;
Это покажет вам привилегии ( гранты в MySQL-talk), которые есть у текущего пользователя. Я предполагаю, что вы не увидите привилегии INSERT для данной таблицы. Вам понадобится пользователь root, чтобы предоставить вам разрешение, выполнив этот запрос:
GRANT INSERT ON 'db'.'tablename' TO 'username'@'localhost'
У меня была аналогичная проблема после переноса моего сайта с одной учетной записи хостинга на другую. Проблема была вызвана SQL-запросом ( INSERT
), который ссылался на старую базу данных. заменив старый db новым именем db (или просто удалив имя db в целом), решила проблему. Но эта ошибка заставила людей поддержать мою хостинговую компанию.
Пример:
INSERT INTO old_db_name.table_name ( ) VALUES ();
Изменился на:
INSERT INTO new_db_name.table_name ( ) VALUES ( );
Надеюсь, это помогает и имеет смысл.
Проверьте код SQL.
И просто удалите dbName, если у вас есть.
Пример:
insert into `dbName`.`tableName` ( columns ) values ( values );
Изменить на:
insert into `tableName` ( columns ) values ( values );
Это также случилось со мной, и проблема в том, что когда вы вызываете команду INSERT
в вашем php-файле, вы должны указать другую базу данных.
Короче, найдите, где находится ваша команда INSERT, и проверьте ее your_database_name
ниже
"INSERT INTO \`your_database_name\`.\`your_table_name\`
Это может решить вашу проблему. Конечно, если вам предоставлены все привилегии.
В вашем запросе вы можете использовать имя таблицы с именем базы данных «INSERT INTO DB_NAME.table_name …», где у пользователя базы данных нет разрешений на вставку для DB_NAME. Таким образом, эта ошибка возникает, потому что запрос указывает на таблицу другой базы данных.
Вам нужно удалить имя базы данных или использовать правильное имя базы данных.
Убедитесь, что у вас есть открытое соединение с базой данных.
Если у вас есть отдельные функции для подключения к базе данных и для значений вставки проверьте подключение к базе данных открыто или нет.