Ответы пользователя по тегу PostgreSQL
  • Почему не могу задать пароль пользователя postgres?

    @glavvra4
    Senior Backend Developer (PHP)
    Символ "!", помещенный в двойные кавычки, порождает сообщение об ошибке, если команда вводится с командной строки. Объясняется тем, что этот символ интерпретируется bash, как попытка обращения к истории команд. Можно обойти эту особенность, используя что-то вроде:

    sudo -u postgres psql -U postgres -c 'alter user postgres with password'\''A******e!qA'\'';'


    Выглядит устрашающе, но для понимания можно разделить SQL-запрос на следующие части:
    1) Первая часть 'alter user postgres with password' - экранируется одиночными кавычками
    2) Первая кавычка \' - экранируется слешем
    3) Пароль 'A******e!qA' - экранируется одиночными кавычками. Восклицательный знак больше не интерпретируется, как обращение к истории запросов
    4) Вторая кавычка \' - также, как и первая экранируется слешем
    5) Оставшаяся часть, в виде ';' - экранируется кавычками

    Вот такое вот экранирование экранирования)
    Ответ написан