2012-01-26 2 views
0

나는 원격 서버에 qrtest_db라는 데이터베이스를 가지고 있으며 퍼티를 통해 모든 권한을 부여 받았다. 내 C# 응용 프로그램에서 나는 SHOW 보조금을 할 때 내가하려고하면 내가 다시 다음 ...MySQL MySQL을 통해 .Net 커넥터 사용

GRANT ALL PRIVILEGES ON *.* TO 'root'@'myIpAddress' IDENTIFIED BY PASSWORD 'myPasswordencrypted' 
GRANT ALL PRIVILEGES ON `qrtest_db`.* TO 'root'@'myIpAddress' 

를 얻을 그러나 등 삭제 삽입, 업데이트, 일 물건에 정상 하루 잘 액세스 할 수 있습니다 다음과 같이 C#에서 GRANT 문을 실행하십시오. . .

"GRANT USAGE ON qrtest_db.* to 'root'@'" + someIPAddress + "' IDENTIFIED BY 'myPassword'"; 

다음 cmd.ExecuteNonQuery에서 메시지를 다시받습니다. . . 데이터베이스 'qrtest_db'에 대한 사용자 '루트'@ 'myIPAddress'거부

액세스

아무도는이 일어나고있는 이유에 어떤 아이디어가 있습니까

? 그랜트는 닷넷 커넥터를 통해 원격으로 허용되지 않습니까? 나는 콘솔에 앉아 하루 종일 권한을 부여 할 수 있습니다.

+1

방금 ​​(분명히 허가없이) 동일한 코드를 사용하여 일반 선택 쿼리를 실행할 수있는 사용자를 생성해야합니다. 개발 머신을 통해 mysql 서버에 로그인 할 수있는 권한이 없다는 것만 큼 간단 할 수도있다. – CodingGorilla

답변

4

GRANT 특권이 없습니다.
가나다 ALL PRIVILEGES에는 GRANT 특권이 없습니다. Reference

all privileges으로 'root'@'myIpAddress' 사용자를 생성했습니다. GRANT가 없습니다. 그런 다음 새로 생성 된이 사용자 ('root'@'myIpAddress')를 사용하여 db 서버에 연결했습니다. C# 응용 프로그램은 'root'@'myIpAddress' 사용자를 사용하여 db 서버에 연결합니다. C#을 통해 GRANT 명령을 입력하면 실패합니다. 이 사용자 ('root'@'myIpAddress')에는 GRANT 옵션이 없으므로. 당신은 그렇게 만들지 않았습니다.

당신은 이러한 진술 (추가 WITH GRANT OPTION)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'myIpAddress' IDENTIFIED BY PASSWORD 'myPasswordencrypted' with GRANT OPTION 
GRANT ALL PRIVILEGES ON `qrtest_db`.* TO 'root'@'myIpAddress' WITH GRANT OPTION 
+0

그는 "console"에서이 grant 문을 문제없이 발급 할 수 있다고 말합니다. 따라서이 문제가 의심 스럽습니다. – CodingGorilla

+1

@Coding, 그는 모든 권한을 가진''root '@'myIpAddress'' 사용자를 만들었습니다. 모두는 보조금을 포함하지 않습니다. 그런 다음 새로 생성 된이 사용자 인 'root'@ 'myIpAddress'를 사용하여 db 서버에 연결했습니다. 그의 C# 응용 프로그램은''root '@'myIpAddress'' 사용자를 사용하여 db 서버에 연결합니다. 그가 C#을 통해 Grant 명령을 입력하면 이 사용자는'GRANT' 옵션을 가지고 있지 않기 때문에 실패합니다. –

+0

당신은 맞습니다. 나는 그의 진술을 잘못 읽었습니다. 처음 읽은 글은 그에게 부여한 첫 번째 두 가지 보조금처럼 들었습니다. 그러나 두 번째 독서에서, 나는 그가 SHOW GRANTS의 결과물이라고 말했습니다. – CodingGorilla