c# - 使用 MySQL .Net 连接器的 MySQL Grant

标签 c# mysql

我在名为 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/

相关文章:

c# - 网络不适用于 Visual Studio 2015 的控制台应用程序

php - 如何访问 joomla 数据库来运行此代码

mysql - 以水平格式显示列

javascript - C#.net 相当于 JS .on()

c# - 如何使用 LINQ 对两个可能字段之一进行分组?

C#如何从字符串中读取两位数到字符

c# - 如果我使用基类定义键会出错

MySQL 导出到 outfile 并覆盖

MySQL:重新设计我的结构。如何移动现有数据?

php - 多次加入后在mysql中查找排名