forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Reviewed-by: Rechenburg, Matthias <matthias.rechenburg@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
189 lines
31 KiB
HTML
189 lines
31 KiB
HTML
<a name="EN-US_TOPIC_0000001427138953"></a><a name="EN-US_TOPIC_0000001427138953"></a>
|
|
|
|
<h1 class="topictitle1">How Does GaussDB(DWS) Implement Workload Isolation?</h1>
|
|
<div id="body0000001427138953"><div class="section" id="EN-US_TOPIC_0000001427138953__section182361216631"><h4 class="sectiontitle">Workload Isolation</h4><p id="EN-US_TOPIC_0000001427138953__p198307211133">In GaussDB(DWS), you can isolate workloads through database and schema configurations. Their differences are as follows:</p>
|
|
<ul id="EN-US_TOPIC_0000001427138953__ul1783019211233"><li id="EN-US_TOPIC_0000001427138953__li16830121732">Databases cannot communicate with each other and share very few resources. Their connections and permissions can be isolated.</li><li id="EN-US_TOPIC_0000001427138953__li683002120316">Schemas share more resources than databases do. User permissions on schemas and subordinate objects can be flexibly configured using the <strong id="EN-US_TOPIC_0000001427138953__b25371616104814">GRANT</strong> and <strong id="EN-US_TOPIC_0000001427138953__b7537141614481">REVOKE</strong> syntax.</li></ul>
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001427138953__p101512442112">You are advised to use schemas to isolate services for convenience and resource sharing. It is recommended that system administrators create schemas and databases and then assign required permissions to users.</p>
|
|
<div class="fignone" id="EN-US_TOPIC_0000001427138953__fig177121431368"><span class="figcap"><b>Figure 1 </b>Used for permission control.</span><br><span><img id="EN-US_TOPIC_0000001427138953__image771319311610" src="figure/en-us_image_0000001389253162.png" title="Click to enlarge" class="imgResize"></span></div>
|
|
<div class="section" id="EN-US_TOPIC_0000001427138953__section1074515119818"><h4 class="sectiontitle">DATABASE</h4><p id="EN-US_TOPIC_0000001427138953__p154906238111">A database is a physical collection of database objects. Resources of different databases are completely isolated (except some shared objects). Databases are used to isolate workloads. Objects in different databases cannot access each other. For example, objects in Database B cannot be accessed in Database A. Therefore, when logging in to a cluster, you must connect to the specified database.</p>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001427138953__section567722784"><h4 class="sectiontitle">SCHEMA</h4><p id="EN-US_TOPIC_0000001427138953__p195411245121119">In a database, database objects are logically divided and isolated based on schemas.</p>
|
|
<p id="EN-US_TOPIC_0000001427138953__p653344516117">With permission management, you can access and operate objects in different schemas in the same session. Schemas contain objects that applications may access, such as tables, indexes, data in various types, functions, and operators.</p>
|
|
<p id="EN-US_TOPIC_0000001427138953__p168281021815">Database objects with the same name cannot exist in the same schema, but object names in different schemas can be the same.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen41317111314"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">CREATE</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="n">myschema</span><span class="p">;</span>
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="k">SCHEMA</span>
|
|
<span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">CREATE</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="n">myschema_1</span><span class="p">;</span>
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="k">SCHEMA</span>
|
|
|
|
<span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">myschema</span><span class="p">.</span><span class="n">t1</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">int</span><span class="p">)</span><span class="w"> </span><span class="n">DISTRIBUTE</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">HASH</span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span>
|
|
<span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">myschema</span><span class="p">.</span><span class="n">t1</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">int</span><span class="p">)</span><span class="w"> </span><span class="n">DISTRIBUTE</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">HASH</span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
|
|
<span class="n">ERROR</span><span class="p">:</span><span class="w"> </span><span class="n">relation</span><span class="w"> </span><span class="ss">"t1"</span><span class="w"> </span><span class="n">already</span><span class="w"> </span><span class="k">exists</span>
|
|
<span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">myschema_1</span><span class="p">.</span><span class="n">t1</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">int</span><span class="p">)</span><span class="w"> </span><span class="n">DISTRIBUTE</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">HASH</span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001427138953__p341871214277">Schemas logically divide workloads. These workloads are interdependent with the schemas. Therefore, if a schema contains objects, deleting it will cause errors with dependency information displayed.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen14617551185911"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">DROP</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="n">myschema_1</span><span class="p">;</span>
|
|
<span class="n">ERROR</span><span class="p">:</span><span class="w"> </span><span class="n">cannot</span><span class="w"> </span><span class="k">drop</span><span class="w"> </span><span class="k">schema</span><span class="w"> </span><span class="n">myschema_1</span><span class="w"> </span><span class="n">because</span><span class="w"> </span><span class="n">other</span><span class="w"> </span><span class="n">objects</span><span class="w"> </span><span class="n">depend</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">it</span><span class="w"> </span>
|
|
<span class="n">Detail</span><span class="p">:</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="n">myschema_1</span><span class="p">.</span><span class="n">t1</span><span class="w"> </span><span class="n">depends</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="k">schema</span><span class="w"> </span><span class="n">myschema_1</span><span class="w"> </span>
|
|
<span class="n">Hint</span><span class="p">:</span><span class="w"> </span><span class="n">Use</span><span class="w"> </span><span class="k">DROP</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="k">CASCADE</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="k">drop</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">dependent</span><span class="w"> </span><span class="n">objects</span><span class="w"> </span><span class="n">too</span><span class="p">.</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001427138953__p224213591204">When a schema is deleted, the <strong id="EN-US_TOPIC_0000001427138953__b22172814016">CASCADE</strong> option is used to delete the objects that depend on the schema.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen2725227326"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">DROP</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="n">myschema_1</span><span class="w"> </span><span class="k">CASCADE</span><span class="p">;</span>
|
|
<span class="n">NOTICE</span><span class="p">:</span><span class="w"> </span><span class="k">drop</span><span class="w"> </span><span class="n">cascades</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="n">myschema_1</span><span class="p">.</span><span class="n">t1</span>
|
|
<span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">DROP</span><span class="w"> </span><span class="k">SCHEMA</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001427138953__section191059541385"><h4 class="sectiontitle">USER/ROLE</h4><p id="EN-US_TOPIC_0000001427138953__p108291221118">Users and roles are used to implement permission control on the database server (cluster). They are the owners and executors of cluster workloads and manage all object permissions in clusters. A role is not confined in a specific database. However, when it logs in to the cluster, it must explicitly specify a user name to ensure the transparency of the operation. A user's permissions to a database can be specified through permission management.</p>
|
|
<p id="EN-US_TOPIC_0000001427138953__p14997185014242">A user is the subject of permissions. Permission management is actually the process of deciding whether a user is allowed to perform operations on database objects.</p>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001427138953__section04811020254"><h4 class="sectiontitle">Permissions Management</h4><p id="EN-US_TOPIC_0000001427138953__p133664218317">Permission management in GaussDB(DWS) falls into three categories:</p>
|
|
<ul id="EN-US_TOPIC_0000001427138953__ul64171044132518"><li id="EN-US_TOPIC_0000001427138953__li18417114442513">System permission<p id="EN-US_TOPIC_0000001427138953__aa9331f78835c4effb59ae7315462f8ea"><a name="EN-US_TOPIC_0000001427138953__li18417114442513"></a><a name="li18417114442513"></a>System permissions are also called user attributes, including <strong id="EN-US_TOPIC_0000001427138953__b17353686592949">SYSADMIN</strong>, <strong id="EN-US_TOPIC_0000001427138953__b32978250792949">CREATEDB</strong>, <strong id="EN-US_TOPIC_0000001427138953__b175727299492949">CREATEROLE</strong>, <strong id="EN-US_TOPIC_0000001427138953__b137937079192949">AUDITADMIN</strong>, and <strong id="EN-US_TOPIC_0000001427138953__b174316134292949">LOGIN</strong>.</p>
|
|
<p id="EN-US_TOPIC_0000001427138953__ac511275173b146c7a3d5c1117cda40fb">They can be specified only by the <strong id="EN-US_TOPIC_0000001427138953__b53152813692949">CREATE ROLE</strong> or <strong id="EN-US_TOPIC_0000001427138953__b63842970992949">ALTER ROLE</strong> syntax. The <strong id="EN-US_TOPIC_0000001427138953__b156393242092949">SYSADMIN</strong> permission can be granted and revoked using <strong id="EN-US_TOPIC_0000001427138953__b83781668292949">GRANT ALL PRIVILEGE</strong> and <strong id="EN-US_TOPIC_0000001427138953__b85659573992949">REVOKE ALL PRIVILEGE</strong>, respectively. System permissions cannot be inherited by a user from a role, and cannot be granted using <strong id="EN-US_TOPIC_0000001427138953__b54118874292949">PUBLIC</strong>.</p>
|
|
</li></ul>
|
|
<ul id="EN-US_TOPIC_0000001427138953__ul17812144692515"><li id="EN-US_TOPIC_0000001427138953__li98127462258">Permissions<p id="EN-US_TOPIC_0000001427138953__a491f58fdf9724a56b29f11cbd156ae08"><a name="EN-US_TOPIC_0000001427138953__li98127462258"></a><a name="li98127462258"></a>Grant a role's or user's permissions to one or more roles or users. In this case, every role or user can be regarded as a set of one or more database permissions.</p>
|
|
<p id="EN-US_TOPIC_0000001427138953__abfac7b4c22ac4671b866b61c633faa8f">If <strong id="EN-US_TOPIC_0000001427138953__b6726627692949">WITH ADMIN OPTION</strong> is specified, the member can in turn grant permissions in the role to others, and revoke permissions in the role as well. If a role or user granted with certain permissions is changed or revoked, the permissions inherited from the role or user also change.</p>
|
|
<p id="EN-US_TOPIC_0000001427138953__aa7f9eff33e96410b9828534c5949b984">A database administrator can grant permissions to and revoke them from any role or user. Roles having <strong id="EN-US_TOPIC_0000001427138953__b152398130292949">CREATEROLE</strong> permission can grant or revoke membership in any role that is not an administrator.</p>
|
|
</li></ul>
|
|
<ul id="EN-US_TOPIC_0000001427138953__ul1391012488251"><li id="EN-US_TOPIC_0000001427138953__li391094882516">Object permission<p id="EN-US_TOPIC_0000001427138953__p224352616259"><a name="EN-US_TOPIC_0000001427138953__li391094882516"></a><a name="li391094882516"></a>Permissions on a database object (table, view, column, database, function, schema, or tablespace) can be granted to a role or user. The <strong id="EN-US_TOPIC_0000001427138953__b73444359192949">GRANT</strong> command can be used to grant permissions to a user or role. These permissions granted are added to the existing ones.</p>
|
|
</li></ul>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001427138953__section158222156819"><h4 class="sectiontitle">Schema Isolation Example</h4><p id="EN-US_TOPIC_0000001427138953__p411620299216">Example 1: </p>
|
|
<p id="EN-US_TOPIC_0000001427138953__p469321617365">By default, the owner of a schema has all permissions on objects in the schema, including the delete permission. The owner of a database has all permissions on objects in the database, including the delete permission. Therefore, you are advised to strictly control the creation of databases and schemas. Create databases and schemas as an administrator and assign related permissions to users.</p>
|
|
<ol id="EN-US_TOPIC_0000001427138953__ol18867361124"><li id="EN-US_TOPIC_0000001427138953__li1488653610126"><span>Assign the permission to create schemas in the <strong id="EN-US_TOPIC_0000001427138953__b13238103416713">testdb</strong> database to user <strong id="EN-US_TOPIC_0000001427138953__b1117313242819">user_1</strong> as user <strong id="EN-US_TOPIC_0000001427138953__b106038570106">dbadmin</strong>.</span><p><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen5586124019522"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">testdb</span><span class="o">=></span><span class="w"> </span><span class="k">GRANT</span><span class="w"> </span><span class="k">CREATE</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">DATABASE</span><span class="w"> </span><span class="n">testdb</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">user_1</span><span class="p">;</span>
|
|
<span class="k">GRANT</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li><li id="EN-US_TOPIC_0000001427138953__li1793104311128"><span>Switch to user <strong id="EN-US_TOPIC_0000001427138953__b13547429171112">user_1</strong>.</span><p><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen8159202719536"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">testdb</span><span class="o">=></span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="k">SESSION</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="n">user_1</span><span class="w"> </span><span class="n">PASSWORD</span><span class="w"> </span><span class="s1">'********'</span><span class="p">;</span>
|
|
<span class="k">SET</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001427138953__p6797162914522">Create a schema named <strong id="EN-US_TOPIC_0000001427138953__b1789195471119">myschema_2 </strong>in the <strong id="EN-US_TOPIC_0000001427138953__b17354604126">testdb</strong> database as <strong id="EN-US_TOPIC_0000001427138953__b17604164620118">user_1</strong>.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen10212123225313"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">testdb</span><span class="o">=></span><span class="w"> </span><span class="k">CREATE</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="n">myschema_2</span><span class="p">;</span>
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="k">SCHEMA</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li><li id="EN-US_TOPIC_0000001427138953__li1859684416122"><span>Switch to the administrator <strong id="EN-US_TOPIC_0000001427138953__b111131091217">dbadmin</strong>.</span><p><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen13214153815312"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">testdb</span><span class="o">=></span><span class="w"> </span><span class="k">RESET</span><span class="w"> </span><span class="k">SESSION</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="p">;</span>
|
|
<span class="k">RESET</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001427138953__p18797192925211">Create <strong id="EN-US_TOPIC_0000001427138953__b1674617343122">table t1</strong> in schema <strong id="EN-US_TOPIC_0000001427138953__b48981738141211">myschema_2</strong> as the administrator <strong id="EN-US_TOPIC_0000001427138953__b184185921216">dbadmin</strong>.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen19969164317531"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">testdb</span><span class="o">=></span><span class="w"> </span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">myschema_2</span><span class="p">.</span><span class="n">t1</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">int</span><span class="p">)</span><span class="w"> </span><span class="n">DISTRIBUTE</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">HASH</span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li><li id="EN-US_TOPIC_0000001427138953__li79047452123"><span>Switch to user <strong id="EN-US_TOPIC_0000001427138953__b3463111791518">user_1</strong>.</span><p><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen14371135155314"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">testdb</span><span class="o">=></span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="k">SESSION</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="n">user_1</span><span class="w"> </span><span class="n">PASSWORD</span><span class="w"> </span><span class="s1">'********'</span><span class="p">;</span>
|
|
<span class="k">SET</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001427138953__p779772965216">Delete table <strong id="EN-US_TOPIC_0000001427138953__b116160161620">t1</strong> created by administrator <strong id="EN-US_TOPIC_0000001427138953__b1212191415160">dbadmin</strong> in schema <strong id="EN-US_TOPIC_0000001427138953__b1182911714165">myschema_2</strong> as user <strong id="EN-US_TOPIC_0000001427138953__b77021544101513">user_1</strong>.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen17859165320552"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">testdb</span><span class="o">=></span><span class="w"> </span><span class="k">drop</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="n">myschema_2</span><span class="p">.</span><span class="n">t1</span><span class="p">;</span>
|
|
<span class="k">DROP</span><span class="w"> </span><span class="k">TABLE</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li></ol>
|
|
<p id="EN-US_TOPIC_0000001427138953__p1197016182211">Example 2:</p>
|
|
<p id="EN-US_TOPIC_0000001427138953__p1093234510366">Due to the logical isolation of schemas, database objects need to be verified at both the schema level and the object level.</p>
|
|
<ol id="EN-US_TOPIC_0000001427138953__ol7442160181616"><li id="EN-US_TOPIC_0000001427138953__li194421021612"><span>Grant the permission on the <strong id="EN-US_TOPIC_0000001427138953__b1387717586175">myschema.t1</strong> table to <strong id="EN-US_TOPIC_0000001427138953__b589217610189">user_1</strong>.</span><p><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen74711729141619"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">GRANT</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">myschema</span><span class="p">.</span><span class="n">t1</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">user_1</span><span class="p">;</span>
|
|
<span class="k">GRANT</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li><li id="EN-US_TOPIC_0000001427138953__li10256162171612"><span>Switch to user <strong id="EN-US_TOPIC_0000001427138953__b1511482316187">user_1</strong>.</span><p><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen12381174615168"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SET</span><span class="w"> </span><span class="k">SESSION</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="n">user_1</span><span class="w"> </span><span class="n">PASSWORD</span><span class="w"> </span><span class="s1">'********'</span><span class="p">;</span>
|
|
<span class="k">SET</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001427138953__p921292713176">Query the table <strong id="EN-US_TOPIC_0000001427138953__b82895394182">myschema.t1</strong>.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen27371257131713"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">myschema</span><span class="p">.</span><span class="n">t1</span><span class="p">;</span>
|
|
<span class="n">ERROR</span><span class="p">:</span><span class="w"> </span><span class="n">permission</span><span class="w"> </span><span class="n">denied</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">schema</span><span class="w"> </span><span class="n">myschema</span>
|
|
<span class="n">LINE</span><span class="w"> </span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">myschema</span><span class="p">.</span><span class="n">t1</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li><li id="EN-US_TOPIC_0000001427138953__li1010514316162"><span>Switch to the administrator <strong id="EN-US_TOPIC_0000001427138953__b125400438188">dbadmin</strong>.</span><p><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen10732829171919"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">RESET</span><span class="w"> </span><span class="k">SESSION</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="p">;</span>
|
|
<span class="k">RESET</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001427138953__p1581595411814">Grant the permission on the <strong id="EN-US_TOPIC_0000001427138953__b1016274911181">myschema.t1</strong> table to user <strong id="EN-US_TOPIC_0000001427138953__b216234921811">user_1</strong>.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen9279152481916"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">GRANT</span><span class="w"> </span><span class="k">USAGE</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="n">myschema</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">user_1</span><span class="p">;</span>
|
|
<span class="k">GRANT</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li><li id="EN-US_TOPIC_0000001427138953__li884911316163"><span>Switch to user <strong id="EN-US_TOPIC_0000001427138953__b0128189181912">user_1</strong>.</span><p><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen579942316201"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="k">SESSION</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="n">user_1</span><span class="w"> </span><span class="n">PASSWORD</span><span class="w"> </span><span class="s1">'********'</span><span class="p">;</span>
|
|
<span class="k">SET</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001427138953__p64413109203">Query the table <strong id="EN-US_TOPIC_0000001427138953__b138041412101917">myschema.t1</strong>.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001427138953__screen16754153119204"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">gaussdb</span><span class="o">=></span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">myschema</span><span class="p">.</span><span class="n">t1</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">b</span>
|
|
<span class="c1">---+---</span>
|
|
<span class="p">(</span><span class="mi">0</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</p></li></ol>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_03_0110.html">Account, Password, and Permission</a></div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<script language="JavaScript">
|
|
<!--
|
|
image_size('.imgResize');
|
|
var msg_imageMax = "view original image";
|
|
var msg_imageClose = "close";
|
|
//--></script> |