标签: users

主机设置为 IP 地址范围的 MySQL 用户

我有一个托管的 MySQL 数据库,我需要从我的客户站点访问它。他们拥有快速的宽带连接,可以为他们提供固定池中的一系列 IP 地址。

所以我需要锁定对他们的 MySQL 用户的访问,以便 Host 设置是一个类中的地址范围。不是全班。

我意识到我可以使用诸如 81.91.71.% 之类的通配符,但这太慷慨了。他们的范围更像是

81.10.20.1 --> 81.10.20.15

除了创建 15 个用户(每个 IP 地址一个)之外,还有其他方法可以做到这一点吗?谢谢马克

mysql users

11
推荐指数
2
解决办法
4万
查看次数

为什么要存储用户密码?

我偶尔会看到一些问题,询问如何安全地存储 Web 应用程序的用户密码(使用 RDBMS,我不是在谈论 Facebook 或 Twitter)。通常的答案是“对密码加盐,然后使用 TDES 或 SHA512 等强算法对其进行散列”。

我的问题是:作为 RDBMS 用户,我为什么要为密码存储问题而烦恼,因为大多数引擎都有内置的身份验证机制。

例如,如果某个用户 X 想要在我的 Web 应用程序上创建帐户用户密码 Y,那么发出以下查询是如何错误的:

CREATE USER X WITH ENCRYPTED PASSWORD Y IN GROUP baseuser;
Run Code Online (Sandbox Code Playgroud)

然后在我的应用程序中,用户可以使用他的凭据打开与数据库的连接,而我根本不必费心管理密码。

我看到了这种方法的多个优点:

  • 如果 RDBMS 决定需要更改加密算法,我不需要接触任何东西,只需应用安全更新;
  • 我很容易管理用户授权。如果用户被提升为管理员角色,我只需要将该用户添加到相应的组中即可;
  • SQL 注入现在毫无意义,因为我管理权限以允许我想允许数据库中的每个用户(例如,在像 SO 这样的论坛中,添加新帖子,回复帖子,评论和编辑/删除他自己的问题) /答案/评论);
  • “匿名”用户帐户可用于未经身份验证连接到我的应用程序;
  • 每个用户都是他提供的数据的所有者。

但在我看到的关于这个主题的几乎每个问题上,似乎都有一个普遍的共识,即这不是必须做的事情。我的问题是:为什么?

注:第三点是允许的政策在PostgreSQL和安全政策在Microsoft SQL Server。我意识到这些概念是新来的,但无论如何,既然它们已经出现,为什么我描述的技术没有成为处理用户帐户的标准方法?

security users

10
推荐指数
4
解决办法
4798
查看次数

MySQL/MariaDB 用户帐户名中允许使用哪些字符?

我不清楚哪些字符可以出现在 MySQL/MariaDB 用户帐户名中,哪些是非法的。我已阅读MySQL 文档中的第6.3.1“用户名和密码”。本节包含有关字符编码和最大名称长度的信息,但没有说明可以在帐户名称中使用的字符是否受到限制(或者我可能错过了那部分?)。

那么,MySQL/MariaDB 中有哪些特殊字符不能用在用户帐户名中?例如,控制字符(如换行符)或通配符(如星号)是否是非法字符?

mysql mariadb users

10
推荐指数
1
解决办法
6448
查看次数

使用共享登录时,如何知道用户对审计表执行删除操作?

背景资料:

  • 我正在创建一组审计表,以跟踪我的应用程序对一组数据表的更新和删除。
  • 审计记录是通过触发器创建的。
  • 我的应用程序数据库中的 DML 通常来自服务用于进入数据库的登录名。因此,我认为SYSTEM_USER在触发器中调用时,结果总是相同的。
  • 我的应用程序当前不存储用户数据,尽管UserId每次完成 DML 时都会为其提供一个字符串(仅在存储过程中完成)。

我遇到的问题是,当用户删除记录时,我想知道是谁做的。因为它将通过相同的登录完成,我不想看到所有操作都是由服务完成的,我想看看是哪个用户完成的。这不是更新的问题,因为我们有ModifiedBy将通过发送的UserId更新来更新的列。

问题是:有没有办法在SYSTEM_USER运行删除时设置或以其他方式将用户信息放入触发器中?

我现在拥有的“最佳”想法,虽然我不确定这是否是一个好主意,但在服务中,我检查当前UserId是否以用户身份存在于数据库中,如果没有,则创建一个用户为他们反对。然后运行存储过程EXECUTE AS User = @UserId。然后当 DML 在存储过程中完成并且触发器触发时,SYSTEM_USER应该从EXECUTE AS.

trigger sql-server audit azure-sql-database users

9
推荐指数
1
解决办法
8999
查看次数

如何查看分配给用户的个人资料

假设我创建了一个用户为'TEST_USER',然后我为其分配了一个配置文件。

现在我如何才能看到TEST_USER分配了哪个配置文件

我想要一些查询来检查分配给用户的配置文件。

oracle-11g users

9
推荐指数
1
解决办法
10万
查看次数

如何在 sql server 中创建用户以使用 Management Studio 仅访问一个数据库

如何在 sql server 2008 R2 中创建用户以使用 Management Studio 仅访问一个数据库。

问候, 萨尔曼

sql-server users

9
推荐指数
2
解决办法
6万
查看次数

在 Postgres 中拥有数千个用户是否可行?

我们正在创建 SAAS,我们最多将拥有 50.000 名客户。我们正在考虑在 Postgres 数据库中为每个客户创建一个用户。我们会将登录我们服务的每个用户映射到数据库中的用户,以确保他们只能访问自己的数据。我们还希望通过此解决方案直接在数据库中实施审计跟踪,它利用触发器。如果每个客户都有自己的数据库用户,那么即使两个客户共享相同的数据,也很容易看出谁做了什么。

因为我们的数据库中有 50.000 个用户,我们会遇到一些意想不到的问题吗?性能方面或管理方面。也许连接池会更困难,但我真的不知道我们是否需要它。

postgresql performance users connection-pooling

9
推荐指数
1
解决办法
3101
查看次数

MySQL 用户对存储过程的权限

我创建了一个简单的存储过程:

mysql> CREATE FUNCTION hello (s CHAR(20))
    -> RETURNS CHAR(50) DETERMINISTIC
    -> RETURN CONCAT('Hello, ',s,'!');
Query OK, 0 rows affected, 1 warning (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

但未能运行它:

mysql> SELECT hello('world');
ERROR 1370 (42000): execute command denied to user ''@'localhost' for routine 'test.hello'
Run Code Online (Sandbox Code Playgroud)

我的用户名可能是空字符串吗?如何创建用户并授予权限?我可以授予用户对数据库中所有实体的所有权限吗?

mysql stored-procedures permissions users

8
推荐指数
1
解决办法
7万
查看次数

不同MySQL环境下的用户名长度限制

我正在为我的本地环境设置一个项目,其初始脚本是一些用于创建数据库的 SQL 命令:

  • create database 'db-name' default character set utf8;

以及grant用户帐户的权限:

  • grant select, insert, update, delete, create, drop, index, alter on 'db-name'.* to 'user-name-too-long-for-user-name'@'localhost' identified by 'user-name-pass'

当我尝试运行grant命令时,我得到了这个:

  • ERROR 1470 (HY000): String 'user-name-to-long-for-user-name' is too long for user name (should be no longer than 16)

我不明白为什么会发生这种情况,而这个脚本在它出现在我的环境之前已经成功运行到另一个环境中。

我使用的服务器版本是5.6.20 MySQL Community Server (GPL)

这种情况是否与某个 MySQL 版本或其他什么有关?

mysql users

8
推荐指数
1
解决办法
2万
查看次数

如何设置每个用户的语句超时?

我在 Postgres 中有多个用户。我想为不同的用户设置不同的语句超时。
例如:访客 5 分钟,管理员 10 分钟。

在 Postgres 11.11 中可以吗?

postgresql configuration users query-timeout postgresql-11

8
推荐指数
1
解决办法
2万
查看次数