<?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>by Bhushan G Ahire</description>
	<lastBuildDate>Mon, 26 Jul 2010 10:25:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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/</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 = ns.oid) WHERE
relkind in (''r'',''v'',''S'') AND
nspname = $4 AND
relname LIKE [...]]]></description>
			<content:encoded><![CDATA[<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.bhushangahire.net%2F2009%2F06%2F17%2Fgrant-privileges-to-all-tables-in-a-database-for-postgresql%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=recommend&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
<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>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-center">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://blog.bhushangahire.net/2009/06/17/grant-privileges-to-all-tables-in-a-database-for-postgresql/&amp;title=Grant+privileges+to+all+tables+in+a+database+for+postgresql" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="sexy-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://blog.bhushangahire.net/2009/06/17/grant-privileges-to-all-tables-in-a-database-for-postgresql/&amp;title=Grant+privileges+to+all+tables+in+a+database+for+postgresql" rel="nofollow" title="Digg this!">Digg this!</a>
		</li>
		<li class="sexy-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://blog.bhushangahire.net/2009/06/17/grant-privileges-to-all-tables-in-a-database-for-postgresql/&amp;title=Grant+privileges+to+all+tables+in+a+database+for+postgresql" rel="nofollow" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="sexy-technorati">
			<a href="http://technorati.com/faves?add=http://blog.bhushangahire.net/2009/06/17/grant-privileges-to-all-tables-in-a-database-for-postgresql/" rel="nofollow" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="sexy-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://blog.bhushangahire.net/2009/06/17/grant-privileges-to-all-tables-in-a-database-for-postgresql/&amp;t=Grant+privileges+to+all+tables+in+a+database+for+postgresql" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Grant+privileges+to+all+tables+in+a+database+for+postgresql+-+http://tr.im/SU8r+(via+@bhushangahire)" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="sexy-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://blog.bhushangahire.net/2009/06/17/grant-privileges-to-all-tables-in-a-database-for-postgresql/&amp;title=Grant+privileges+to+all+tables+in+a+database+for+postgresql&amp;summary=Grant%20privileges%20to%20all%20tables%20in%20a%20database%20%28select%2C%20update%2C%20insert%2C%20delete%29%0AEg%3A%28%20Creating%20a%20read-only%20user%20in%20postgres%29%0A%E2%80%93Function%20to%20grant%20access%28select%2Cinsert%2Cupdate%2Cdelete%29%20to%20users%0A%0ACREATE%20FUNCTION%20pg_grant%28TEXT%2C%20TEXT%2C%20TEXT%2C%20TEXT%29%0ARETURNS%20integer%20AS%20%27%0ADECLARE%20obj%20record%3B%0Anum%20integer%3B%0ABEGIN%0Anu&amp;source=eXpand yOur cReativity" rel="nofollow" title="Share this on Linkedin">Share this on Linkedin</a>
		</li>
		<li class="sexy-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fblog.bhushangahire.net%2F2009%2F06%2F17%2Fgrant-privileges-to-all-tables-in-a-database-for-postgresql%2F&amp;t=Grant+privileges+to+all+tables+in+a+database+for+postgresql" rel="nofollow" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

<div style='clear:both'></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>
