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

Ошибка 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" работает совершенно нормально, также этот запрос отлично работает на двух других моих серверах.

4b9b3361

Ответ 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;

Тогда это будет сделано.