Seph
Seph

Reputation: 786

MySQL Error: #1142 - SELECT command denied to user

I'm having troubles with a certain query on one of my servers. On all other places I've tested it, it works completely fine, but on the server I want to use it, it isn't working.

It's about the following 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 

This is the error code I get from it:

SELECT command denied to user 'marco'@'localhost' for table 'projecten'

The tables:

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 ;

The strange part is that every other query on both the 'projecten' table and the 'facturen' table works completely fine, also this query works fine on two other servers of mine.

Upvotes: 53

Views: 305135

Answers (15)

Vaibs
Vaibs

Reputation: 2096

I faced the same situation but it's funny that the reason for the error was due to the use of incorrect database or schema name.

It's true that multiple issues can lead to the error you have mentioned.

Upvotes: 64

Marsad Akbar
Marsad Akbar

Reputation: 614

I might be late but posting here for newbies. So in my case, I'm using Laravel 9 with 2 Databases (MySQL) and In my localhost, it works perfectly but on live hosting, I am getting this error

SQLSTATE[42000]: Syntax error or access violation: 1142 SELECT command denied

so after surfing around I found that I am using the wrong database name which causes the error. So be double sure to check both databases' names as per PHPMyAdmin.

Upvotes: 1

O. Jones
O. Jones

Reputation: 108641

I tried to issue SELECT * FROM information_schema.INNODB_METRICS; on a so-called "budget host." I got 1142 because reading that particular system table requires the PROCESS privilege and the user didn't have it. I had to fool around to figure out it was PROCESS and not some other privilege that was missing.

(No, the "budget host" won't grant that priv to the user. They probably don't want their customers to see how ridiculously overloaded their servers are. Because MySQL licenses are expens .... wait, no they're free.)

Upvotes: 0

veena v.k.
veena v.k.

Reputation: 101

This error also arises for a syntax error occurred due to tablename aliasing.

For instance, when executing below query,

select * from a.table1, b.table2 where a.table1= b.table2

below error occurs:

MySQL Error: #1142. Response form the database. SELECT command denied to user "username@ip" for table "table1"

Solution : Syntax to alias tablename should be used properly, syntax solution for above instance:

select * from table1 a, table2 b where a.table1= b.table2

Upvotes: 10

Milos Jankovic
Milos Jankovic

Reputation: 506

I had this error, because I copied stored procedure from localhost and there the db name was different then on the server I wanted to use it. It took me a couple of hours to figure out, why I don't have permissions to execute the procedure... Check you db names pls :D Hope someone finds this useful...

Upvotes: 2

Siraj Ali
Siraj Ali

Reputation: 604

If you using/connect more then one databases then you should use same DB_USERNAME for all databases

I had the same issue solved by using same DB_USERNAME for all databases , because i was use/connect multiple databases in same project and every database DB_USERNAME was different so when i run the query select,update, delete etc from multiple database then was get this error.

because if you use more then one table in query and the database DB_USERNAME is different you will get this error.

Upvotes: 0

Venu Reddy
Venu Reddy

Reputation: 1

You need to give privileges to the particular user by giving the command mysql> GRANT ALL PRIVILEGES . To 'username'@'localhost'; and then give FLUSH PRIVILEGES; command. Then it won't give this error.., hope it helps thank you..!

Upvotes: 0

Nesar Ahmad Nori
Nesar Ahmad Nori

Reputation: 75

I run into this problem as well, the case with me was incorrect naming . I was migrating from local server to online server. my SQL command had "database.tablename.column" structure. the name of database in online server was different. for example my code was "pet.item.name" while it needed to be "pet_app.item.name" changing database name solved my problem.

Upvotes: 1

faizah
faizah

Reputation: 31

I just emptied my session data then it worked again. Here is where you find the button:

Upvotes: 2

xyz
xyz

Reputation: 588

This error happened on my server when I imported a view with an invalid definer.

Removing the faulty view fixed the error.

The error message didn't say anything about the view in question, but was "complaining" about one of the tables, that was used in the view.

Upvotes: 0

Erik Schroder
Erik Schroder

Reputation: 63

I had this problem too and for me, the problem was that I moved to a new server and the database I was trying to connect to with my PHP code changed from "my_Database" to "my_database".

Upvotes: 5

Harry
Harry

Reputation: 9

In MySQL query browser go to Tools tab>MySQL Administrator > User Administration and then give the privileges to user.

Upvotes: -3

CodeJohnny
CodeJohnny

Reputation: 71

So the issue I ran into was this... the application I used to grant the permissions converted the Schema.TableName into a single DB statement in the wrong table, so the grant was indeed wrong, but looked correct when we did a SHOW GRANTS FOR UserName if you weren't paying very close attention to GRANT SELECT vs GRANT TABLE SELECT. Manually correcting the Grant Select on Table w/ proper escaping of Schema.Table solved my issue.

May be unrelated, but I can imagine if one client does this wrong, another might too.

Hope that's helpful.

Upvotes: 1

Dhileepan
Dhileepan

Reputation: 2047

This is th privileges issue in your database users. first check and grant permission to user 'marco' in localhost

Upvotes: 4

khaled_webdev
khaled_webdev

Reputation: 1430

You need to grant SELECT permissions to the MySQL user who is connecting to MySQL

same question as here Error: select command denied to user '<userid>'@'<ip-address>' for table '<table-name>'

see answers of the link ;)

Upvotes: 19

Related Questions