Первые шаги с PostgreSQL, создаём пользователя
hamster
Я думаю, что если в вашем браузере открыта эта страница моего уютного блога, вам не надо рассказывать о PostgreSQL и его возможностях, о том, почему и зачем он вам нужен. Случайных людей здесь не бывает. Сюда приходят только в результате целенаправленного поиска и только те, кто знает, зачем им нужен PostgreSQL, но увы, не знает, как с ним найти общий язык. Начиная с этой демонстрации, я намерен последовательно показывать, как я делал свои первые шаги с этой базой данных.
В этом блоге мы исследуем, в том числе, возможности великолепной операционной системы Debian и её составляющих. Если вы интересуетесь PostgreSQL, лиха беда начало, рано или поздно вы обязательно окажетесь один на один с Debian и его окружением. В особо тяжелых случаях вероятен даже контакт с голой консолью. Можете ни на секунду в этом не сомневаться. Проверено!
Исходные данные
В моём распоряжении есть компьютер с уже установленным и настроенным Debian, на следующем снимке экрана показан рабочий стол этой операционной системы:

Приглашение командной строки открытого на рабочем столе терминала говорит нам, что я работаю на машине от имени hamster. На эту деталь следует обратить внимание, чуть позже эти данные помогут мне принять одно самое обыкновенное, но ключевое решение.
Передо мной стоит следующая задача: мне необходимо создать в этой операционной системе базу данных PostgreSQL, чтобы чуть позже использовать её с web-приложением для тестирования и изучения его возможностей. Таков план...
Установка PostgreSQL
Перед установкой PostgreSQL желательно убедиться, что ваш Debian правильно и адекватно локализован. Для этого обычно достаточно посмотреть на выхлоп команды locale и попробовать вбить в терминале текст на родном языке. Вот как это выглядит у меня.

Русские буквы печатает, таможня даёт добро...
Установить PostgreSQL очень не сложно, достаточно вбить в терминале всего лишь одну команду.
$ sudo apt install postgresql

На снимке экрана мы видим чудесный выхлоп пакетного менеджера, в котором перечислены все зависимости, которые будут установлены сразу после того, как я нажму Enter на своей клавиатуре. Процесс займёт некоторое время, следует дождаться его полного завершения. Я покажу, как выглядит мой терминал сразу после завершения установки запрошенного ПО.

В представленном выхлопе видно, что кодовая страница и часовой пояс моей консоли автоматически унаследовались кластером PostgreSQL. Никаких дополнительных телодвижений в этом направлении делать не требуется.
Создаём пользователя
Казалось бы, что сразу после установки PostgreSQL можно приступать к своим непосредственным обязанностям администратора базы данных. Но стопэ, стоит остановиться на секундочку и подумать над следующим вопросом... А от чьего имени я собираюсь работать с PostgreSQL? Из выхлопа пакетного менеджера мы увидели, что все файлы и данные в только что созданной СУБД будут принадлежать пользователю — это суперпользователь, для которого не предусмотрено никаких ограничений, работать от его имени небезопасно и нецелесообразно. Следовательно, мне нужен пользователь, от имени которого мои программы будут подключаться к СУБД и манипулировать данными. И это должен быть пользователь с ограниченными правами. И этого пользователя я должен создать средствами PostgreSQL.
Чуть выше в этом тексте я обращал внимание, от чьего имени я работаю в текущей сессии операционной системы, это — скромный и непритязательный пользователь Linux. Логично будет предложить работать и с базой данных тоже от его имени. Создавая пользователя базы данных с именем, совпадающим с именем текущего пользователя операционной системы, я, как минимум, смогу в последствии подключаться к ней без ввода пароля. Иногда это бывает очень удобно и полезно.
На начальном этапе в варианте дефолтных настроек, создать нового пользователя средствами PostgreSQL можно только от имени . Стать этим пользователем в терминале мне поможет sudo. Вбиваю в приглашение командной строки следующую команду:
$ sudo -i -u postgres
И вот как выглядит результат исполнения этой команды в моём терминале:

Как видно на снимке экрана выше, приглашение командной строки поменяло свой вид и сообщает мне, что теперь в этом терминале я работаю от имени пользователя . И это значит, что я без особого труда и препятствий могу создать нового пользователя PostgreSQL.
PostgreSQL предполагает совершенно различные сценарии использования конечным пользователем. На данный момент мне всего лишь нужна база данных для учебных целей, для отладки и тестирования web-приложения, для конструирования своих первых SQL-запросов. В процессе своих экспериментов я предполагаю подключаться к базе данных разными способами. Поэтому создавать пользователя я буду в интерактивном режиме, и новому пользователю очень желательно задать несложный пароль, такой, чтобы можно было быстро ввести и легко запомнить, для учебных целей я предпочитаю в качестве пароля две латинские буквы a.
С именем пользователя я уже определился, имя будет совпадать с именем текущего пользователя операционной системы. Вбиваю в терминале следующую команду:
createuser hamster -P -d --interactive
Здесь я указал имя нового, создаваемого пользователя, ключ -P требует назначить этому пользователю пароль для входа, а ключ -d даст ему возможность создавать собственные базы данных. Крайний ключ в команде (--interactive) предполагает интерактивный режим процесса создания пользователя. Вбиваю эту команду в терминале от имени и жму Enter.

Как видно на снимке экрана выше, программа запросила пароль и остановилась в ожидании пользовательского ввода. При вводе пароль не будет отображаться. За вводом пароля последуют ещё три интерактивных запроса, нужно будет повторить ввод пароля и выбрать полномочия и права новой роли, каждый раз выбирая желаемый вариант из двух предложенных — y или n. Как это выглядит в моём терминале можно увидеть на следующем снимке экрана.

На два крайних интерактивных запроса я ответил отказом — не требуется для моих текущих задач. На этом миссию пользователя можно считать завершенной, я сделаю exit в его терминале.
Создаём базу данных
Теперь, когда у меня есть пользователь базы данных, чьё имя совпадает с именем текущего пользователя операционной системы, я могу создать базу данных элементарной терминальной командой.
$ createdb webjournal
Имя можно будет выбрать любое, легко запоминающееся, в данном случае я создаю базу данных с именем webjournal.

Не сложно догадаться, что созданная база данных принадлежит пользователю , и у этого пользователя не будет никаких препятствий и ограничений при администрировании этой базы данных. Good..!
В рамках этой демонстрации я не буду упражняться с запросами, всё только начинается, просто покажу для начала, что база данных существует, и к ней можно подключиться с помощью консоли psql, от имени текущего пользователя операционной системы, без ввода пароля. А сразу после успешного подключения я выйду обратно в терминал. Вот как это может выглядеть.
$ psql -d webjournal

Конечно же, созданная база данных на текущий момент не имеет в своём составе ни одной таблицы. Именно такая мне и нужна для одной весьма любопытной прикладной задачи. Можно считать, что все поставленные для этой краткой демонстрации цели достигнуты. Я думаю, что в рамках этого блога я ещё не раз вернусь к теме PostgreSQL и покажу некоторые нехитрые приёмы работы с ней посредством встроенной консоли psql. Оставайтесь на связи, следите за обновлением блога.
Для справки, созданную только что базу данных я намерен использовать в одной тематической демонстрации в соседнем блоге, и это может быть интересно всем заглянувшим сюда. Ни на что не намекаю... I'm just saying.