MySQL使用MySQL.Net连接器授予

本文关键字:MySQL Net 使用 连接器 | 更新日期: 2023-09-27 18:21:47

我在一个名为qrtest_db的远程服务器上有一个数据库,通过putty我已经连接并赋予了它所有权限。在我的C#应用程序中,我可以访问它,进行日常事务、更新、插入删除等。当我展示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连接器远程授予?我可以整天坐在控制台上授予权限。

MySQL使用MySQL.Net连接器授予

您没有GRANT权限
因为ALL PRIVILEGES不包含GRANT权限参考

您使用all privileges创建了一个'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