标签: users

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万
查看次数

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

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

在 Postgres 11.11 中可以吗?

postgresql configuration users query-timeout postgresql-11

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

如何自动授予用户在 mysql 中创建的架构的所有权限?

有人新加入了公司,我使用以下命令在 mysql 中为她创建了一个帐户:

CREATE USER 'username' IDENTIFIED BY 'password'
Run Code Online (Sandbox Code Playgroud)

她需要创建自己的模式,因此使用:

GRANT CREATE ON *.* TO username;
Run Code Online (Sandbox Code Playgroud)

问题是现在她能够创建新的模式和表,但她不能用它做任何事情。我希望她不能访问现有的模式/表,但能够创建自己的数据库并对其进行任何操作。这可能吗?

mysql permissions users

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

在 Postgres 中获取当前用户 OID 的最快方法?

我正在考虑将用户的 OID 存储在表的“所有者”列中,因此如果他们更改了用户名,我无需执行任何操作。

我知道可以将 pg_has_role() 与 OID 一起使用,这很好。

是否有一种快速简便的方法来获取当前用户的 OID,而无需将其与系统表之一进行匹配?

postgresql users postgresql-9.3

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

用户默认数据库的用途是什么?

据我了解,指定了默认数据库,这样如果您没有在连接字符串中指定数据库,它就会知道从哪里开始。它是否正确?

我从未见过没有指定数据库的连接字符串,这可能吗?为什么有人想要这样做?它只是使您连接的数据库变得不那么透明。

换句话说,是否有任何理由选择 master 之外的其他数据库作为默认数据库?

sql-server users logins

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

错误代码:1133。在用户表中找不到任何匹配的行

我正在阅读 O'Relly “Learning MySQL”,它说您可以通过执行以下操作在 MySQL 中创建一个用户:

mysql> GRANT ALL ON *.* TO 'jill'@'%.invyhome.com' IDENTIFIED BY 'the_password';
Query OK, 0 rows affected (0.01 sec)
Run Code Online (Sandbox Code Playgroud)

但如果我尝试这样做:

-> grant select on testgrounds.personas to ''@'localhost';
--> Error Code: 1133. Can't find any matching row in the user table
Run Code Online (Sandbox Code Playgroud)

但是如果我使用密码它会成功:

->grant select on testgrounds.personas to ''@'localhost' identified by 'pass';
--> 0 row(s) affected
Run Code Online (Sandbox Code Playgroud)

我不得不恢复用户 root 的权限,因为我正在试验并且我把它们搞砸了,所以我想在这样做之前我实际上可以使用书中的语句(我不记得 100%)

-> select current_user;
--> 'root@localhost'

-> show grants;
--> 'GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'localhost\' IDENTIFIED BY …
Run Code Online (Sandbox Code Playgroud)

mysql users

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

导出所有 MySQL 用户

我需要导出所有 MySQL 数据库用户(包括权限)以进行迁移。有超过 5,000 个用户,这样做的最佳方法是什么?

我应该把mysql.user桌子扔掉吗?

mysql permissions users

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

使用此用户还原后,将 SQL Server 用户重新绑定到其登录名

在执行 SQL Server (v12.0.2000) 数据库的还原后,我认为需要将用户重新映射到其登录名(这个问题似乎被称为孤儿用户)。最简单的方法之一是执行:

use [MyDatabase];
alter user MyUser with login = MyUser;
Run Code Online (Sandbox Code Playgroud)

然而,在实现恢复后,该USE命令失败了,因为我试图用 执行上述命令'MyUser',这是孤立的...

因为它是在脚本中,所以我想避免restore与一个用户和alter user另一个用户执行 a ,以便第一个用户正确地重新映射到其登录名。

有没有办法用“MyUser”来做到这一点(谁可以毫无问题地连接到主人)?

我通过以下方式完全限定“MyUser”进行了尝试,但没有成功:

use master;
alter user MyDatabase.MyUser with login = MyUser;
Run Code Online (Sandbox Code Playgroud)

知道这是否可能以及如何做到吗?

sql-server sql-server-2012 users logins

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

有什么办法可以防止 PostgreSQL 用户更改自己的密码?

我正在管理 PotsgreSQL 服务器,最近我意识到我的“非超级用户”用户有可能更改我为不安全密码分配的安全密码。

我在REVOKE文档中进行了搜索,但找不到阻止这种情况的方法。有可能的?

提前致谢!

postgresql security permissions users password

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

postgres 创建可以选择表和这些表的列的有限用户

我有一个应用程序,可以自动创建 PostgreSQL 数据库,还可以自动创建数据库用户。出于安全目的,该数据库用户被授予有限的访问权限,因为它将被移交给客户端使用。 我使用的版本是Postgres 9.6

CREATE USER %USERSETUP% WITH
    LOGIN PASSWORD '%USERSETUPPASS%'
    NOSUPERUSER
    NOCREATEDB
    NOCREATEROLE
    INHERIT
    NOREPLICATION
    CONNECTION LIMIT -1;

ALTER DEFAULT PRIVILEGES IN SCHEMA %SCHEMA% GRANT INSERT, SELECT, UPDATE, DELETE, REFERENCES ON TABLES TO %USERSETUP%;
Run Code Online (Sandbox Code Playgroud)

现在,我的测试还进入创建的数据库,并验证它是否已正确创建,使用查询脚本获取表名称,然后获取每个表内的列名称(作为奖励,还获取列数据类型

由于这些权限,用户无法使用 information_schema。 另外,我只请求带有 SYSTEM CATALOG 的查询脚本

我的表名脚本有效:

SELECT tablename FROM pg_catalog.pg_tables where schemaname = '{schema}'
Run Code Online (Sandbox Code Playgroud)

这将表名称作为列表返回:

业务、位置、人员、客户等...

但是,当我运行以下两个脚本来获取列名称时,我得到的返回值为 0,就好像该用户正在尝试查询 information_schema 一样。我猜这是因为特权:

SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname ~ 'schemaaryzdhyqoi'
  AND …
Run Code Online (Sandbox Code Playgroud)

postgresql permissions scripting users postgresql-9.6

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