我在名为 qrtest_db 的远程服务器上有一个数据库,我已通过 putty 连接并授予它所有权限。在我的 C# 应用程序中,我可以正常访问它以进行日常操作、更新、插入删除等。 当我做 SHOW GRANTS 时,我得到以下信息......
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 上我收到了消息。 . .
拒绝用户 'root'@'myIPAddress' 访问数据库 'qrtest_db'
有人知道为什么会这样吗? 是否不允许通过 .Net 连接器远程授权? 我可以整天坐在控制台前授予权限。
最佳答案
您没有GRANT
权限。
因为 ALL PRIVILEGES
不包含 GRANT
权限。 Reference
您创建了一个具有所有权限
的'root'@'myIpAddress'
用户。它不包含 GRANT。然后您使用这个新创建的用户 ('root'@'myIpAddress'
) 连接到数据库服务器。您的 C# 应用程序正在使用 'root'@'myIpAddress'
用户连接到数据库服务器。当您通过 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
关于c# - 使用 MySQL .Net 连接器的 MySQL Grant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9025127/