Ошибка MySQL: # 1142 - команда SELECT, запрещенная пользователю
У меня возникают проблемы с определенным запросом на одном из моих серверов. Во всех других местах я протестировал его, он работает отлично, но на сервере я хочу использовать его, он не работает.
Это о следующем SQL:
SELECT facturen.id AS fid,
projecten.id AS pid,
titel,
facturen.totaal_bedrag AS totaal,
betaald,
datum
FROM facturen,
projecten
WHERE facturen.project_id = projecten.id
AND projecten.eigenaar = '1'
ORDER BY datum DESC
Это код ошибки, который я получаю от него:
SELECT command denied to user 'marco'@'localhost' for table 'projecten'
Таблицы:
facturen:
CREATE TABLE IF NOT EXISTS `facturen` (
`id` int(11) NOT NULL auto_increment,
`project_id` int(11) NOT NULL,
`datum` int(11) NOT NULL,
`lever_datum` int(11) NOT NULL,
`totaal_bedrag` decimal(9,2) NOT NULL,
`btw` decimal(9,2) NOT NULL,
`bedrijf` varchar(40) NOT NULL,
`contactpersoon` varchar(60) NOT NULL,
`adres` varchar(60) NOT NULL,
`postcode` varchar(7) NOT NULL,
`plaats` varchar(30) NOT NULL,
`betaald` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=201200006 ;
projecten:
CREATE TABLE IF NOT EXISTS `projecten` (
`id` int(11) NOT NULL auto_increment,
`titel` varchar(80) NOT NULL,
`eigenaar` int(11) NOT NULL,
`creatie_datum` int(11) NOT NULL,
`eind_datum` int(11) NOT NULL,
`totaal_bedrag` decimal(9,2) NOT NULL,
`btw` decimal(9,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=201200004 ;
Странная часть заключается в том, что каждый другой запрос как в таблице "projecten", так и в таблице "facturen" работает совершенно нормально, также этот запрос отлично работает на двух других моих серверах.
Ответы
Ответ 1
Вам необходимо предоставить разрешения SELECT для пользователя MySQL, который подключается к MySQL
тот же вопрос, что и здесь Ошибка: выберите команду, запрещенную пользователю '<userid> ' @'< ip-address > ' для таблицы '< table-name > '
см. ответы на ссылку;)
Ответ 2
Я столкнулся с одной и той же ситуацией, но смешно, что причина ошибки была связана с использованием неправильной базы данных или имени схемы.
Правда, что несколько проблем могут привести к ошибке, о которой вы упомянули.
Ответ 3
Эта ошибка также возникает из-за синтаксической ошибки, возникающей из-за псевдонимов tablename.
Например, при выполнении запроса ниже
выберите * из таблицы a.table1, b.table2, где a.table1 = b.table2
ниже возникает ошибка:
Ошибка MySQL: # 1142. Ответ формирует базу данных. Команда SELECT запрещена для пользователя "username @ip" для таблицы "table1"
Решение. Синтаксис для псевдонима tablename должен использоваться правильно, синтаксическое решение для вышеуказанного экземплярa > выберите * из таблицы1 a, table2 b, где a.table1 = b.table2
Ответ 4
У меня тоже была эта проблема, и для меня проблема заключалась в том, что я перешел на новый сервер, а база данных, с которой я пытался подключиться, с моим кодом PHP изменилась с "my_Database" на "my_database".
Ответ 5
Это проблема с привилегиями пользователей вашей базы данных. первая проверка и предоставление разрешения пользователю
'marco' в локальном хостинге
Ответ 6
Итак, проблема, с которой я столкнулся, заключалась в следующем: приложение, которое я использовал для предоставления разрешений, превратило Schema.TableName в один оператор БД в неправильную таблицу, поэтому грант был действительно неправильным, но выглядел правильным, когда мы это делали SHOW GRANTS ДЛЯ UserName, если вы не обращали особого внимания на GRANT SELECT vs GRANT TABLE SELECT. Ручная корректировка выбора гранта в таблице с правильным экранированием Schema
. Table
решила мою проблему.
Может быть несвязанным, но я могу представить, может ли один клиент сделать это неправильно, другой тоже может быть.
Надеюсь, что это поможет.
Ответ 7
Эта ошибка произошла на моем сервере, когда я импортировал представление с недопустимым определителем.
Удаление неисправного вида исправило ошибку.
Сообщение об ошибке ничего не говорило о рассматриваемом представлении, но "жаловалось" на одну из таблиц, которая использовалась в представлении.
Ответ 8
В браузере запросов MySQL перейдите на вкладку "Инструменты" > "Администратор MySQL" > "Администрирование пользователя", а затем предоставите пользователю права.
Ответ 9
это о приватизации пользователя в mysql, поэтому вы должны установить большие гранты с вашими пользователями.
сделайте это!
В терминале введите код
mysql> show grants;
затем измените следующий код следующим образом:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*3F9DF5A32114E05C12C50A83EAE02991016C917B' WITH GRANT OPTION;
Тогда это будет сделано.