<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>eXpand yOur cReativity &#187; grant</title>
	<atom:link href="http://blog.bhushangahire.net/tag/grant/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.bhushangahire.net</link>
	<description></description>
	<lastBuildDate>Thu, 05 Jan 2012 07:17:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Grant privileges to all tables in a database for postgresql</title>
		<link>http://blog.bhushangahire.net/2009/06/17/grant-privileges-to-all-tables-in-a-database-for-postgresql/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=grant-privileges-to-all-tables-in-a-database-for-postgresql</link>
		<comments>http://blog.bhushangahire.net/2009/06/17/grant-privileges-to-all-tables-in-a-database-for-postgresql/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 11:50:08 +0000</pubDate>
		<dc:creator>Bhushan Ahire</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[grant]]></category>
		<category><![CDATA[permissions]]></category>
		<category><![CDATA[postgres]]></category>

		<guid isPermaLink="false">http://blog.bhushangahire.net/?p=127</guid>
		<description><![CDATA[Grant privileges to all tables in a database (select, update, insert, delete) Eg:( Creating a read-only user in postgres) –Function to grant access(select,insert,update,delete) to users CREATE FUNCTION pg_grant(TEXT, TEXT, TEXT, TEXT) RETURNS integer AS ' DECLARE obj record; num integer; BEGIN num:=0; FOR obj IN SELECT relname FROM pg_class c JOIN pg_namespace ns ON (c.relnamespace [...]]]></description>
			<content:encoded><![CDATA[<div class="snap_preview">
<p>Grant privileges to all tables in a database (select, update, insert, delete)</p>
<p>Eg:( Creating a read-only user in postgres)</p>
<p>–Function to grant access(select,insert,update,delete) to users<br />
<code><br />
CREATE FUNCTION pg_grant(TEXT, TEXT, TEXT, TEXT)<br />
RETURNS integer AS '<br />
DECLARE obj record;<br />
num integer;<br />
BEGIN<br />
num:=0;<br />
FOR obj IN SELECT relname FROM pg_class c<br />
JOIN pg_namespace ns ON (c.relnamespace = ns.oid) WHERE<br />
relkind in (''r'',''v'',''S'') AND<br />
nspname = $4 AND<br />
relname LIKE $3<br />
LOOP<br />
EXECUTE ''GRANT '' || $2 || '' ON '' || obj.relname || '' TO '' || $1;<br />
num := num + 1;<br />
END LOOP;<br />
RETURN num;<br />
END;<br />
' LANGUAGE plpgsql SECURITY DEFINER;<br />
</code><br />
–Function to revoke access(select,insert,update,delete) from users<br />
<code><br />
CREATE FUNCTION pg_revoke(TEXT, TEXT, TEXT, TEXT)<br />
RETURNS integer AS '<br />
DECLARE obj record;<br />
num integer;<br />
BEGIN<br />
num:=0;<br />
FOR obj IN SELECT relname FROM pg_class c<br />
JOIN pg_namespace ns ON (c.relnamespace = ns.oid) WHERE<br />
relkind in (''r'',''v'',''S'') AND<br />
nspname = $4 AND<br />
relname LIKE $3<br />
LOOP<br />
EXECUTE ''REVOKE '' || $2 || '' ON '' || obj.relname || '' FROM '' || $1;<br />
num := num + 1;<br />
END LOOP;<br />
RETURN num;<br />
END;<br />
' LANGUAGE plpgsql SECURITY DEFINER;<br />
</code><br />
–Create users for your database<br />
<code><br />
CREATE USER userreadonly WITH PASSWORD 'userr3ad0nly';<br />
CREATE USER userall WITH PASSWORD 'usersh0pa11';<br />
</code><br />
–Grant respective access to users<br />
<code><br />
select pg_grant('</code><code>userreadonly </code><code>','select','%','public');<br />
select pg_grant('</code><code>userall </code><code>','select,insert,update,delete','%','public');<br />
</code></p>
<p>You might need to create lang for plpgsql if you had not done so<br />
<code><br />
createlang plpgsql yrdatabasename</code></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.bhushangahire.net/2009/06/17/grant-privileges-to-all-tables-in-a-database-for-postgresql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

