gpt4 book ai didi

database - 创建的用户,那么现在谁拥有创建的表?

转载 作者:搜寻专家 更新时间:2023-10-30 20:22:53 26 4
gpt4 key购买 nike

我的大部分背景都来自 sql server,所以我在 Oracle 术语方面遇到了困难。

sql server 中,我创建数据库 Sales 并使用 create table dbo.MyTable {... 在 Sales 下创建对象}。现在我可以使用 select * from Sales.dbo.MyTable 查询此表。在 Management Studio 中,我将在 SalesTables 下看到我的表 dbo.Sales。很明显,这些对象与销售相关。

我正在尝试对 Oracle 做同样的事情。显然,everything can reside under the same database模式发生了什么变化。

因此,在安装 Oracle XE 11.2 之后,我能够使用用户 sys 登录到 SID XE

使用 sys 登录后,我创建了一个用户 SALESMANAGER 并授予了权限:

CREATE USER salesmanager IDENTIFIED BY mypassword;
GRANT CONNECT, RESOURCE, DBA TO salesmanager;

现在我有一个用户和一个名为 SALESMANAGER 的空模式。我以 SALESMANAGER 身份登录,然后创建表 Totals。现在表 属于 模式SALESMANAGER

我不希望它们处于该模式下;我希望它们属于 SALES。如果我创建另一个用户 SALES,那么我将创建另一个模式。

我知道我的逻辑是错误的,所以感谢任何帮助。

最佳答案

你说的都是对的。

如果您希望用户 SALES 包含您的表,为什么不创建它(而是创建了 SALESMANAGER)?

因此:再次以 SYS 身份连接,然后

drop user salesmanager cascade;
CREATE USER sales IDENTIFIED BY mypassword;

grant create session, create table to sales;

不要授予您不需要的权限。特别是,不要授予 DBA(这是一个强大的角色)。如果事实证明您需要额外的权限(当然您会 - 例如 create viewcreate sequence,...),授予它们。

现在,连接为 sales 并创建 totals 表。

如果您想保留salesmanager 用户,请不要删除它。用户 sales 然后可以将其表的某些权限授予其他用户 - salesmanager 包括在内。连接为 sales:

create table totals (id number, total number);
insert into totals (id, total) values (1, 100);
grant select on totals to salesmanager;

连接为销售经理:

select * From sales.totals;    --> precede table name with its owner

关于database - 创建的用户,那么现在谁拥有创建的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56570382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com