{"id":23646,"date":"2017-03-27T15:52:28","date_gmt":"2017-03-27T18:52:28","guid":{"rendered":"https:\/\/blog.locaweb.com.br\/?p=23646"},"modified":"2022-08-31T16:49:30","modified_gmt":"2022-08-31T19:49:30","slug":"instalando-o-postgresql-no-ubuntu-16-04","status":"publish","type":"post","link":"https:\/\/www.locaweb.com.br\/blog\/temas\/codigo-aberto\/instalando-o-postgresql-no-ubuntu-16-04\/","title":{"rendered":"Instalando o PostgreSQL no Ubuntu 16.04"},"content":{"rendered":"<p>Instalar o <em>PostgreSQL<\/em> no <em>Ubuntu 16.04<\/em> \u00e9 uma tarefa bem simples, pois os reposit\u00f3rios padr\u00e3o j\u00e1 disponibilizam os pacotes que precisamos.<\/p>\n<p>Para isso basta digitar os seguintes comandos<\/p>\n<p>[code language=&#8221;bash&#8221;]<br \/>\n$ sudo apt update<br \/>\n$ sudo apt install postgresql<br \/>\n[\/code]<\/p>\n<p>Feito isso, j\u00e1 temos nosso software instalado em nosso computador. Para testar se est\u00e1 tudo certo, precisamos antes entender dois aspectos da instala\u00e7\u00e3o.<\/p>\n<p><strong>Primeiro aspecto:<\/strong> a instala\u00e7\u00e3o criar\u00e1 um usu\u00e1rio em nosso sistema operacional chamado Postgres, ao qual voc\u00ea pode conferir com o seguinte comando<\/p>\n<p>[code language=&#8221;bash&#8221;]<br \/>\n$ cut -d: -f1 \/etc\/passwd<br \/>\nphsil<br \/>\ngeoclue<br \/>\nmysql<br \/>\nsmmta<br \/>\nsmmsp<br \/>\nguest-atgpth<br \/>\npostgres<br \/>\n[\/code]<\/p>\n<p>A sa\u00edda deste comando vai depender de quantos usu\u00e1rios voc\u00ea j\u00e1 tem criados em seu <em>Ubuntu<\/em>, mas como podemos ver o usu\u00e1rio <em>Postgres<\/em> est\u00e1 por ali.<\/p>\n<p><strong>Segundo aspecto:<\/strong> foi criada uma role com nome <em>postgres<\/em>. O <em>Postgres<\/em> tem um sistema de autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o baseado em roles (regras). Muitas pessoas confundem roles com usu\u00e1rios, mas na verdade n\u00f3s n\u00e3o temos usu\u00e1rios, somente roles.<\/p>\n<p>O motivo para essas duas coisas acontecerem \u00e9 que inicialmente o <em>Postgres<\/em> \u00e9 configurado para autenticar utilizando a t\u00e9cnica de ident. De uma maneira bem simplificada, isso significa que o nome da <em>role<\/em> do banco e o nome do usu\u00e1rio do <em>Ubuntu<\/em> devem ser iguais para que seja poss\u00edvel a autentica\u00e7\u00e3o. Isso acontece por conta do tipo de autentica\u00e7\u00e3o, a qual funciona associando a <em>role<\/em> a uma conta do Ubuntu relacionada.<\/p>\n<p>Voc\u00ea pode constatar isso fazendo um simples teste no console interativo do <em>Postgres<\/em>, o psql. Tente autenticar com o seu usu\u00e1rio padr\u00e3o digitando no terminal<\/p>\n<p>[code language=&#8221;bash&#8221;]<br \/>\n$ psql<br \/>\npsql: FATAL:  role &quot;phsil&quot; does not exist<br \/>\n[\/code]<\/p>\n<p>Como o usu\u00e1rio do meu Ubuntu se chama <strong>phsil<\/strong> e eu n\u00e3o tenho nenhuma <em>role<\/em> criada no banco para esse usu\u00e1rio, recebo erro fatal do <em>psql<\/em>. Se voc\u00ea quiser autenticar com o sua conta padr\u00e3o do <em>Ubuntu<\/em>, ter\u00e1 que criar uma <em>role<\/em> para ela. Para isso, podemos ent\u00e3o, utilizar o usu\u00e1rio do <em>postgres<\/em> para entrar no <em>psql<\/em><\/p>\n<p>[code language=&#8221;bash&#8221;]<br \/>\n$ sudo -u postgres psql<br \/>\n[\/code]<\/p>\n<p>O que estamos querendo dizer com este comando \u00e9 \u201c<em>Ubuntu<\/em>, execute o <em>psql<\/em> utilizando o usu\u00e1rio <em>postgres<\/em>\u201d. Se tudo deu certo, agora estamos dentro do <em>psql<\/em>. O <em>psql<\/em> nos poupa bastante escrever <em>queries<\/em> em SQL por conta de j\u00e1 ter v\u00e1rios comandos pr\u00e9-definidos pelo <em>Postgres<\/em>.<\/p>\n<p>Uma vez dentro do <em>psql<\/em>, j\u00e1 sabemos que nossa instala\u00e7\u00e3o funcionou e estamos preparados para come\u00e7ar a utilizar nosso banco de dados. Vamos ent\u00e3o criar uma role para o nosso usu\u00e1rio padr\u00e3o do <em>Ubuntu<\/em>, que no meu caso \u00e9 o <strong>phsil<\/strong>. Antes, vamos listar as <em>roles<\/em> j\u00e1 existentes<\/p>\n<p>[code language=&#8221;bash&#8221;]<br \/>\npostgres= \\du<br \/>\n[\/code]<\/p>\n<p><a href=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-24-at-5.21.53-PM-1.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-23647\" src=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-24-at-5.21.53-PM-1.png\" alt=\"\" width=\"625\" height=\"68\" \/><\/a><\/p>\n<p>Como podemos ver, a \u00fanica role que eu tenho \u00e9 a do <em>postgres<\/em>. Vamos criar ent\u00e3o a nova <em>role<\/em><\/p>\n<p>[code language=&#8221;bash&#8221;]<br \/>\npostgres= create role phsil;<br \/>\nCREATE ROLE<br \/>\npostgres= \\du<br \/>\n[\/code]<\/p>\n<p><a href=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-24-at-5.22.02-PM-1.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-23648\" src=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-24-at-5.22.02-PM-1.png\" alt=\"\" width=\"629\" height=\"80\" \/><\/a><\/p>\n<p>Com o comando acima eu criei uma <em>role<\/em>, mas como eu n\u00e3o passei nenhum par\u00e2metro, essa <em>role<\/em> n\u00e3o tem nenhuma permiss\u00e3o, nem conseguimos logar ainda no <em>psql<\/em> com ela. Vamos ent\u00e3o atualizar essa role para ser um superusu\u00e1rio e, ent\u00e3o, poder logar no sistema e para poder criar um banco de dados<\/p>\n<p>[code language=&#8221;bash&#8221;]<br \/>\npostgres= alter role phsil with superuser login createdb;<br \/>\nALTER ROLE<br \/>\npostgres= \\du<br \/>\n[\/code]<\/p>\n<p><a href=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-24-at-5.24.27-PM-1.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-23649\" src=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-24-at-5.24.27-PM-1.png\" alt=\"\" width=\"624\" height=\"82\" \/><\/a><\/p>\n<p>A <em>role createdb<\/em> \u00e9 necess\u00e1ria. Ainda n\u00e3o conseguiremos logar no <em>psql<\/em> sem antes criarmos um banco de dados com o mesmo nome de nossa <em>role<\/em>. O nosso sistema de autentica\u00e7\u00e3o assume que isso precisa acontecer para que ele autorize a autentica\u00e7\u00e3o. Vamos listar quais bancos j\u00e1 est\u00e3o criados<\/p>\n<p>[code language=&#8221;bash&#8221;]<br \/>\npostgres= \\l<br \/>\n[\/code]<\/p>\n<p><a href=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-24-at-5.24.34-PM-1.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-23650\" src=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-24-at-5.24.34-PM-1.png\" alt=\"\" width=\"624\" height=\"117\" \/><\/a><\/p>\n<p>N\u00e3o temos ainda o banco <strong>pshil<\/strong> e ent\u00e3o precisamos cri\u00e1-lo<\/p>\n<p>[code language=&#8221;bash&#8221;]<br \/>\npostgres= create database phsil;<br \/>\nCREATE DATABASE<br \/>\npostgres= \\l<br \/>\n[\/code]<\/p>\n<p><a href=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-24-at-5.24.41-PM-1.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-23651\" src=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-24-at-5.24.41-PM-1.png\" alt=\"\" width=\"627\" height=\"145\" \/><\/a><\/p>\n<p>N\u00e3o vamos nos preocupar agora com a estrutura deste banco porque na maioria das vezes nem o utilizamos.<\/p>\n<p>Feito isso, estamos preparados para fazer nosso teste final. Vamos enfim logar no <em>psql<\/em> com o nosso usu\u00e1rio padr\u00e3o do <em>Ubuntu<\/em><\/p>\n<p>[code language=&#8221;bash&#8221;]<br \/>\npostgres= \\q<br \/>\n$ psql<\/p>\n<p>psql (9.5.5)<br \/>\nType &quot;help&quot; for help.<\/p>\n<p>phsil=<br \/>\n[\/code]<\/p>\n<p>E voil\u00e1. Tudo certo e nosso banco est\u00e1 prontinho. Voc\u00ea agora est\u00e1 preparado para criar aplica\u00e7\u00f5es fant\u00e1sticas. Qualquer d\u00favida, fala comigo nos coment\u00e1rios! Abra\u00e7o e at\u00e9 a pr\u00f3xima.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Instalar o PostgreSQL no Ubuntu 16.04 \u00e9 uma tarefa bem simples, pois os reposit\u00f3rios padr\u00e3o j\u00e1 disponibilizam os pacotes que precisamos. Para isso basta digitar os seguintes comandos [code language=&#8221;bash&#8221;] $ sudo apt update $ sudo apt install postgresql [\/code] Feito isso, j\u00e1 temos nosso software instalado em nosso computador. Para testar se est\u00e1 tudo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":23664,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-23646","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-aberto"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/23646","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/comments?post=23646"}],"version-history":[{"count":1,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/23646\/revisions"}],"predecessor-version":[{"id":36486,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/23646\/revisions\/36486"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/media\/23664"}],"wp:attachment":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/media?parent=23646"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/categories?post=23646"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/tags?post=23646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}