2012-06-08 19 views
23

Tôi gặp sự cố với một truy vấn nhất định trên một trong các máy chủ của tôi. Trên tất cả những nơi khác tôi đã thử nghiệm nó nó hoạt động hoàn toàn tốt nhưng trên máy chủ tôi muốn sử dụng nó nó không hoạt động.Lỗi MySQL: # 1142 - Lệnh SELECT bị từ chối cho người dùng

Đó là về SQL sau đây:

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 

Đây là mã lỗi tôi nhận được từ nó:

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

Các bảng: 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 ; 

Phần lạ là mọi truy vấn khác trên cả bảng 'chiếu' và bảng 'facturen' hoạt động hoàn toàn tốt, truy vấn này hoạt động tốt trên hai máy chủ khác của tôi.

+0

bt2 trong bt2.projecten là gì? –

+0

vấn đề đặc quyền? –

+0

Một lỗi đánh máy của tôi từ tôi kể từ khi tôi sao chép nó vào đây từ cơ sở dữ liệu cũ của tôi. Nó không có trên cơ sở dữ liệu chính nên vấn đề không được giải quyết. Ngoài ra nó không phải là một vấn đề đặc quyền kể từ khi tôi có quyền truy cập đầy đủ. – Seph

Trả lời

11

Bạn cần phải cấp quyền SELECT để người sử dụng MySQL người đang kết nối với MySQL

cùng một câu hỏi như ở đây Error: select command denied to user '<userid>'@'<ip-address>' for table '<table-name>'

xem câu trả lời của liên kết;)

+0

Đã thử điều đó và nó vẫn không hoạt động, nhưng dù sao đi nữa. – Seph

+3

Bạn có tìm thấy câu trả lời cho điều này không? Tôi có cùng một vấn đề ngay bây giờ. Người dùng có các đặc quyền, nhưng không thể chọn từ một bảng này. – Kenzo

+0

Nó có thể sai biểu thức SELECT, điều này xảy ra trong 5.7 (có vẻ nghiêm ngặt hơn) – nvvetal

2

Đây là đặc quyền thứ vấn đề trong bạn người dùng cơ sở dữ liệu. đầu tiên kiểm tra và cấp quyền cho người dùng 'marco' trong localhost

1

Vì vậy, vấn đề tôi gặp phải là ... ứng dụng tôi đã sử dụng để cấp quyền chuyển đổi Schema.TableName thành một câu lệnh DB trong bảng sai , do đó, các khoản trợ cấp đã thực sự sai, nhưng nhìn chính xác khi chúng tôi đã làm một SHOW GRANTS FOR UserName nếu bạn không chú ý đến GRANT SELECT vs GRANT TABLE SELECT. Sửa thủ công Grant Select trên Bảng w/thoát thích hợp của Schema. Table đã giải quyết được sự cố của tôi.

Có thể không liên quan, nhưng tôi có thể tưởng tượng nếu một khách hàng thực hiện điều này sai, một khách hàng khác cũng vậy.

Hy vọng điều đó hữu ích.

-2

Trong trình duyệt truy vấn MySQL, chuyển đến tab Công cụ> Quản trị viên MySQL> Quản trị người dùng và sau đó cấp đặc quyền cho người dùng.

+0

câu hỏi không phải là về một số trình duyệt không xác định, chỉ cần MySQL tinh khiết – SBH

4

Tôi đã gặp vấn đề này và với tôi, vấn đề là tôi đã chuyển sang máy chủ mới và cơ sở dữ liệu mà tôi đang cố gắng kết nối với mã PHP của tôi đã thay đổi từ "my_Database" thành "my_database".

11

Tôi phải đối mặt với tình huống tương tự nhưng điều thú vị của nó là do sử dụng tên cơ sở dữ liệu hoặc lược đồ không chính xác.

Sự thật là nhiều sự cố có thể dẫn đến lỗi bạn đã đề cập.

-2

đó là về sự riêng tư của người dùng trong mysql, vì vậy bạn nên đặt các khoản tài trợ lớn hơn với người dùng của mình.

làm điều này!

Trong Terminal, đặt mã mysql> show grants;

sau đó thay đổi đoạn mã sau như thế này:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*3F9DF5A32114E05C12C50A83EAE02991016C917B' WITH GRANT OPTION;

Sau đó, nó sẽ được thực hiện.

3

Lỗi này cũng phát sinh khi xảy ra lỗi cú pháp do tablename bí danh.

Ví dụ, khi thực hiện dưới đây truy vấn,

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

dưới đây lỗi xảy ra:

MySQL Error: #1142. Response form the database. SELECT command denied to user "[email protected]" for table "table1"

Giải pháp: Cú pháp để bí danh tablename nên được sử dụng đúng đắn, giải pháp cú pháp ví dụ ở trên> chọn * từ bảng 1 a, bảng2 b trong đó a.table1 = b.table2