Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CMS php使用C登录#_C#_Mysql_Windows_Execution - Fatal编程技术网

C# CMS php使用C登录#

C# CMS php使用C登录#,c#,mysql,windows,execution,C#,Mysql,Windows,Execution,我对MySQL不太了解,所以我学习了一个关于简单php CMS系统的小教程。如本文所述 在本文中,有一个简单的用户MySQL数据库,由以下程序生成: 创建表“用户”( `id`int(11)非空自动递增主键, `用户名`varchar(100)不为空, `电子邮件'varchar(100)不为空, `密码'varchar(100)不为空 )ENGINE=InnoDB默认字符集=1; 这似乎正是我所需要的,一个简单的登录系统的简单数据记录器网站。我相信,就网络而言,它确实会起作用。虽然在我的例子

我对MySQL不太了解,所以我学习了一个关于简单php CMS系统的小教程。如本文所述

在本文中,有一个简单的用户MySQL数据库,由以下程序生成:

创建表“用户”(
`id`int(11)非空自动递增主键,
`用户名`varchar(100)不为空,
`电子邮件'varchar(100)不为空,
`密码'varchar(100)不为空
)ENGINE=InnoDB默认字符集=1;
这似乎正是我所需要的,一个简单的登录系统的简单数据记录器网站。我相信,就网络而言,它确实会起作用。虽然在我的例子中,我有一个小的数据记录器设备,应该通过C#登录

使用MySql.Data.MySqlClient;
当我开始写连接url时

MySqlConUrl=$“服务器={DBServer};数据库={DeviceDB};Uid={Acount};Pwd={AcountPass}”;
MySQLcon=新的MySqlConnection(MySqlConUrl);
我注意到,当我试图编写多个设备数据库时,允许/禁止用户帐户登录并按用户ID查看数据库。那么C#就不能登录到以前的数据库,我也不能用C#登录到该用户数据库本身。 我无法设置第一个表中用户的权限。 有没有办法让早期的数据库也支持C#登录

--更新2--自2018年2月18日起
为了进一步说明,MySQL包含一个数据库\mysqls\users

这是创建MySQL内部用户的地方,只有这些帐户才能由MySQLclient、MySqlConnection()命令使用。我正在寻找一种使用另一个自定义用户数据库的方法,而不是在\mysql\users下。因此,它可以为C所使用的mySQL连接器提供登录功能。

从问题中,我认为这就是正在发生的事情。

您正在尝试使用web用户凭据(帐户和帐户密码)与数据库建立连接

这不是它在网站和博客文章中的工作方式

下面是它的工作原理

MySQL中有一个数据库,应用程序使用自己的登录信息连接到该数据库,登录信息存储在连接字符串中,并且不会因用户而异

现在,当您想要验证一个用户时,您可以在
users
表中检查他的登录信息(同时仍然使用您的连接字符串连接到数据库)

如果您想了解有关身份验证/授权的更多信息,请查看

对评论澄清的回应

现在,让我们从多租户应用程序的角度来看它

如果您计划只运行一个连接到其他数据库的应用程序实例,那么您需要一种方法来获取租户的数据库信息。您可以做的是创建一个应用程序连接到的数据库,并将该连接字符串存储在应用程序设置中。它应该有一个包含所有租户和数据库登录信息的表

如果每个租户都有一个实例,那么在web.config、appsettings.json或环境变量中添加连接字符串可能会更容易

关于更改MySQL存储用户信息的位置/方式


您可以检查

MySQL DBMS的帐户无法访问
DeviceDB
schema?然后您需要将其权限授予
Acount
?该教程的质量也极低,不应使用。在整个代码中都使用了手动转义,并且完全忽略了正确的密码散列实践。他们想把它放在MySqlOn的一个旁注上:
Pwd={AcountPass)}
看起来像个打字错误。编辑:哦,我想是:)确实是打字错误。嗯,不,我没试过,我知道你的意思。虽然您关闭了mySQL的内部用户数据库,但我想使用另一个DB用户表(buildin除外)(因此PHP人员可能会保留自己的onw),但这样基于SQL连接器的解决方案就可以拥有自己的每个解决方案的DB。Ea I应该能够将该DB解决方案移动到另一台mySQL服务器,保持登录完整。多个解决方案可以在同一台mySQL服务器上共存而不受损害。(在基于连接器的解决方案中不使用web用户)@user613326您正在尝试构建多租户解决方案吗?@user613326看起来您不能完全完成您想要做的事情。”在内部,服务器将特权信息存储在mysql数据库的授权表中(即,在名为mysql的数据库中)“我认为你从错误的角度看待这个问题。hm multi-tenant对我来说是一个新名词,但它似乎是对的,它的本质是可扩展性——在生产和开发之间轻松移动数据库,并将解决方案数据库移动到不同的主机/云上;在我使用mysql的时候,我得到了这样一个印象:移动sql本身是可能的。ea拥有一个巨大的mySQL服务器,可以用于各种独立的软件解决方案。您可能是对的,它可能不受支持,在这种情况下,我将寻找另一个支持此功能的数据库。感谢您所做的所有努力,您描述的方式并不是如何定义多租户,但本质是我应该寻找其他内容。我需要一台运行多个数据库的服务器,每个datatabase需要一个登录名,也许是docker解决方案等等。很明显,mysql及其连接器无法做到这一点。