Sql

Удалить базу postgresql: Удаление базы данных PostgreSQL – Timeweb Cloud

Удаление базы данных-получателя из группы доступности — SQL Server Always On

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

Область применения: SQL Server (все поддерживаемые версии)

В этом разделе описывается удаление базы данных-получателя из группы доступности AlwaysOn с помощью среды SQL Server Management Studio, Transact-SQL или PowerShell в SQL Server.

Требования и ограничения

  • Эта задача поддерживается только на вторичных репликах. Необходимо подключиться к экземпляру сервера, размещающему вторичную реплику, из которой удаляется база данных.

Разрешения

Необходимо разрешение ALTER на базу данных.

Использование среды SQL Server Management Studio

Удаление базы данных-получателя из группы доступности

  1. В обозревателе объектов подключитесь к экземпляру сервера, размещающему вторичную реплику, из которой требуется удалить одну или несколько баз данных-получателей, и разверните дерево сервера.

  2. Разверните узел Высокий уровень доступности AlwaysOn и узел Группы доступности .

  3. Выберите группу доступности и разверните узел

    Базы данных доступности .

  4. Этот шаг зависит от того, удаляется несколько баз данных или только одна база данных.

    • Чтобы удалить несколько баз данных, используйте панель Подробности обозревателя объектов , чтобы просмотреть и выбрать базы данных, которые требуется удалить. Дополнительные сведения см. в разделе Использование раздела «Подробности обозревателя объектов» для мониторинга групп доступности (среда SQL Server Management Studio).

    • Чтобы удалить одну базу данных, выберите ее в обозревателе объектов или на панели Подробности обозревателя объектов .

  5. Щелкните правой кнопкой мыши выбранную базу данных или базы данных и выберите в контекстном меню команду Удалить базу данных-получателя .

  6. В диалоговом окне Удаление базы данных из группы доступности нажмите кнопку ОК, чтобы удалить все выбранные базы данных. Если все перечисленные базы данных удалять не нужно, нажмите кнопку Отмена.

Использование Transact-SQL

Удаление базы данных-получателя из группы доступности

  1. Подключитесь к экземпляру сервера, на котором находится дополнительная реплика.

  2. Используйте предложение SET HADR в инструкции ALTER DATABASE следующим образом:

    ALTER DATABASE имя_базы_данных SET HADR OFF

    где имя_базы_данных ― имя базы данных-получателя, удаляемой из группы доступности, к которой она относится.

    В следующем примере локальная база данных-получатель MyDb2 удаляется из соответствующей группы доступности.

    ALTER DATABASE MyDb2 SET HADR OFF;  
    GO  
    

Использование PowerShell

Удаление базы данных-получателя из группы доступности

  1. Перейдите в каталог (cd) экземпляра сервера, на котором размещается вторичная реплика.

  2. Используйте командлет Remove-SqlAvailabilityDatabase , указав имя базы данных доступности, которую требуется удалить из группы доступности. Когда установлено подключение к экземпляру сервера, на котором находится вторичная реплика, из группы доступности удаляется только локальная база данных-получатель.

    Например, следующая команда удаляет базу данных-получатель MyDb8 из вторичной реплики, размещенной на экземпляре сервера SecondaryComputer\Instance. Синхронизация данных для удаленных баз данных-получателей прекращается. Эта команда не влияет на базу данных-источник и на любые другие базы данных-получатели.

    Remove-SqlAvailabilityDatabase `  
    -Path SQLSERVER:\Sql\SecondaryComputer\InstanceName\AvailabilityGroups\MyAg\AvailabilityDatabases\MyDb8  
    

    Примечание

    Чтобы просмотреть синтаксис командлета, воспользуйтесь командлетом Get-Help в среде PowerShell SQL Server . Дополнительные сведения см. в разделе Get Help SQL Server PowerShell.

Настройка и использование поставщика SQL Server PowerShell

  • Поставщик SQL Server PowerShell

Дальнейшие действия. После удаления базы данных-получателя из группы доступности

После удаления базы данных-получателя она перестает входить в группу доступности, кроме того, из группы доступности удаляются все сведения об этой базе данных-получателе. Удаленная база данных-получатель переводится в состояние RESTORING.

Совет

В течение некоторого времени после удаления базы данных-получателя можно перезапустить синхронизацию данных AlwaysOn в базе данных, повторно присоединив ее к группе доступности. Дополнительные сведения см. в статье Присоединение базы данных-получателя к группе доступности (SQL Server).

В этот момент поступить с удаленной базой данных-получателем можно следующим образом.

  • Если эта база данных-получатель больше не нужна, ее можно удалить.

    Дополнительные сведения см. в разделе DROP DATABASE (Transact-SQL) или Удаление базы данных.

  • Если после удаления базы данных-получателя из группы доступности она еще может понадобиться, ее можно восстановить. Однако при восстановлении удаленной базы данных-получателя в режиме «в сети» окажутся две разные базы данных с одним именем. Необходимо обеспечить, чтобы клиенты могли получить доступ только к текущей базе данных-источнику.

    Дополнительные сведения см. в разделе Восстановление базы данных без восстановления данных (Transact-SQL).

См. также:

Обзор групп доступности AlwaysOn SQL Server)
Удаление базы данных-источника из группы доступности (SQL Server)

Подготовка к работе | Основы реляционных баз данных

Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Если PostgreSQL запустить без аргументов, то она пытается подключиться к локальной базе данных, которая находится на той же машине. При этом программа подключается с именем, которое совпадает с именем текущего пользователя. Делает она это с помощью роли с этим же именем. Если PostgreSQL установили верно, то запуск в Linux, например, Ubuntu, негативно реагирует на отсутствие соответствующей роли:

psql
psql: FATAL:  role "tirion" does not exist

Эту проблему можно решить с помощью конструкции sudo -u postgres psql, которую используют в терминале при подключении PostgreSQL.

Но это не лучшее решение, по таким причинам:

  • У пользователя postgres есть максимальные права в СУБД. Если завладеть ими, можно все уничтожить. Поэтому приложения или пользователи никогда не создают базы данных от имени postgres и никогда не работают из-под этого пользователя

  • Придется постоянно использовать эту конструкцию sudo -u postgres для любых команд, которые связаны с СУБД. Если у вас MacOS, часть sudo -u postgres использовать не нужно. После установки PostgreSQL автоматически конфигурируется для работы с вашим пользователем

В этом уроке разберем, как создать пользователя и базу данных в СУБД, чтобы psql не выдавал ошибку и все данные были в безопасности. Так мы подготовим PostgreSQL к работе.

Создание пользователя в СУБД

Чтобы упростить работу по ходу курса, создадим роль с таким же именем, как и пользователь, из-под которого вы работаете. Выполните следующие действия:

  1. Посмотрите имя вашего текущего пользователя:

    whoami
    tirion
    
  2. Создайте роль с таким же именем внутри PostgreSQL с помощью команды createuser. Ее нужно запускать от пользователя postgres, иначе она попробует соединиться с СУБД от имени текущего пользователя, которого там нет:

    # Флаг --createdb добавляет нашей роли возможность создавать базы данных
    # По умолчанию этой возможности нет
    sudo -u postgres createuser --createdb tirion
    # Чтобы удалить пользователя, можно воспользоваться командой:
    dropuser tirion
    

Теперь у нас есть роль в СУБД. Попробуем с ее помощью соединиться с PostgreSQL:

psql
psql: FATAL:  database "tirion" does not exist

Снова ошибка. Теперь psql «ругается», что не выбрана база данных. Невозможно соединиться с СУБД, если не указать конкретную базу данных. Ее можно указать самостоятельно — передать один аргумент в psql.

Мы уже знаем, что внутри PostgreSQL создана база postgres. Попробуем подключиться к ней:

psql postgres
postgres=>

Соединение удалось. Теперь посмотрим список ролей. Для этого подходит команда \du (Describe Users), которую нужно выполнить внутри REPL:

postgres=> \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 tirion    | Create DB                                                  | {}

В СУБД создалось две роли: postgres

и которую самостоятельно добавили ранее. Теперь создадим базу данных.

Создание базы данных в СУБД

Для экспериментов нам понадобится база данных и, возможно, даже не одна. Создадим базу с именем hexlet. Сделать это можно из командной строки командой createdb:

# Опция --owner позволяет указать владельца создаваемой базы данных
sudo -u postgres createdb --owner=tirion hexlet
# Если запустить эту команду без аргументов,
# то она попытается создать базу данных,
# которая совпадает с именем вашего пользователя в системе
createdb hexlet

Имя для базы данных выбирается произвольно и обычно совпадает с названием проекта, для которого она создается. Имена баз уникальны в рамках одной СУБД. Это значит, что повторный вызов createdb с тем же именем приведет к ошибке.

После установки PostgreSQL создает несколько служебных баз данных, которые нужны для работы самой СУБД. Посмотрим их список:

# Посмотреть список баз данных
psql -l
# Неполный вывод
                          List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |
-----------+----------+----------+-------------+-------------+
 pgadmin   | pgadmin  | UTF8     | en_US. UTF-8 | en_US.UTF-8 |
 tirion    | tirion   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

Теперь у нас есть роль и база данных для экспериментов. Подключимся к этой базе данных:

psql hexlet
hexlet=>

Созданную базу данных можно удалить командой dropdb:

dropdb hexlet

Если удалили, не забудьте ее снова создать, так как она понадобится нам в дальнейшем.

Запускать команду dropdb нужно с осторожностью. Удаление базы данных — необратимый процесс, так как базы невозможно восстановить без резервных копий. Чтобы избежать проблем: команда dropdb не работает без аргументов — ей всегда нужно передавать имя базы.

Удалить базу данных можно только в том случае, если к ней никто не подключен — за исключением того, кто удаляет. Если есть другие клиенты, например psql или pgadmin4, то СУБД предупредит о невозможности выполнить команду.

dropdb hexlet
dropdb: error: database removal failed: ERROR:  database "hexlet" is being accessed by other users
DETAIL:  There is 1 other session using the database.

Как удалить базу данных в PostgreSQL

Когда база данных PostgreSQL больше не нужна, мы можем удалить/удалить ее с помощью SQL SHELL, командной строки, и pgAdmin . Для этого PostgreSQL предоставляет пару команд/операторов, таких как DROP DATABASE и dropdb . Итак, давайте узнаем, как удалить/удалить конкретную базу данных в PostgreSQL.

Как удалить/удалить базу данных PostgreSQL с помощью SQL SHELL?

Команда DROP DATABASE может быть выполнена из SQL SHELL для удаления/удаления базы данных PostgreSQL . Оператор DROP DATABASE удаляет каталоги и каталоги, связанные с этой базой данных. Вот основной синтаксис оператора DROP DATABASE :

 DROP DATABASE [IF EXISTS] dbname; 

Давайте разберем приведенную выше команду шаг за шагом:

DROP DATABASE — это команда для удаления определенной База данных PostgreSQL .

— если указанная база данных не существует, параметр IF EXISTS выдаст уведомление, а не ошибку.

dbname — удаляемая база данных.

Давайте выполним команду «\l» , чтобы проверить список всех доступных баз данных:

Предположим, нам нужно удалить базу данных с именем «example» с помощью psql. Для этого мы выполним следующую команду:

 УДАЛИТЬ БАЗУ ДАННЫХ, ЕСЛИ СУЩЕСТВУЕТ пример; 

Приведенная выше команда будет выполнять следующие функции:

testdb — имя базы данных.

ЕСЛИ СУЩЕСТВУЕТ проверит существование примера.

DROP DATABASE удалит данную базу данных, например.

Приведенный выше фрагмент подтвердил, что база данных с именем «пример» была успешно удалена.

Выполним команду DROP DATABASE еще раз, чтобы удалить ту же базу данных, например:

 УДАЛИТЬ БАЗУ ДАННЫХ, ЕСЛИ СУЩЕСТВУЕТ пример; 

На этот раз команда DROP DATABASE выдала уведомление о том, что база данных «example» не существует.

Как удалить/удалить базу данных PostgreSQL с помощью командной строки?

В Postgres команду dropdb можно выполнить из командной строки (cmd), чтобы удалить любую конкретную базу данных. Команда dropdb будет иметь следующий синтаксис:

dropdb [параметр/опция] имя_базы_данных

Вот подробное объяснение приведенного выше фрагмента:

dropdb — это команда, которая удаляет/удаляет базу данных.

параметры/параметры — это аргументы командной строки, которые может принимать команда dropdb .

dbname — имя удаляемой базы данных.

Ниже приведен список параметров, которые может принимать команда dropdb :

–help

Используется для получения справки по команде dropdb.

-if exists

Выдает уведомление, а не выдает ошибку, если данная база данных не существует.

-e

Используется для отображения команд, которые должны быть отправлены на сервер

-i

Перед удалением отображается запрос на проверку.

-V

Показывает версию dropdb.

-h

Используется для указания имени хоста для машины сервера.

-U

Используется для указания имени пользователя для подключения.

-p

Используется для указания порта, на котором сервер прослушивает соединения.

обслуживание db-=dbname

Для удаления этой конкретной базы данных требуется имя подключенной базы данных.

-w

Используйте параметр -w, если вы не хотите запрашивать пароль для dropdb .

Используется для запроса пароля для команды dropdb.

Давайте выполним следующие шаги, чтобы удалить базу данных с именем «exampledb» с помощью команды dropdb :

Шаг 1: Доступ к Postgres

команда cd, за которой следует полный путь:

 C:\Program Files\PostgreSQL\14\bin 

Шаг 2: Выполните команду dropdb

Давайте выполним команду dropdb из командной строки, чтобы удалить базу данных с именем «exampledb»:

 dropdb -U postgres exampledb 

Когда вы выполните вышеупомянутую команду, она попросит вас ввести пароль. После того, как вы укажете соответствующий пароль, команда dropdb удалит базу данных с именем «exampledb», подключенную к пользователю с именем postgres.

Как удалить/удалить базу данных PostgreSQL с помощью pgAdmin?

Вы можете удалить базу данных PostgreSQL с помощью графического интерфейса, например pgAdmin. Выполните приведенные ниже шаги, чтобы узнать, как удалить базу данных Postgres с помощью pgAdmin:

Шаг 1: выберите базу данных

Откройте pgAdmin и выберите базу данных, которую вы хотите удалить:

Шаг 2: удалите базу данных

Щелкните правой кнопкой мыши нужную базу данных и выберите опцию «Удалить/удалить», чтобы удалить конкретную базу данных:

Шаг 3: Подтверждение

Уведомление о подтверждении появится после того, как вы нажмете на опцию «Удалить/удалить»:

Нажатие на кнопку «Да» приведет к удалению выбранной базы данных.

Заключение

В PostgreSQL , DROP DATABASE и dropdb команды используются для удаления определенной базы данных. Вы можете выполнить команду DROP DATABASE из psql, а команду dropdb из командной строки, чтобы удалить/удалить базу данных. Более того, базу данных PostgreSQL можно удалить с помощью пгАдмин . В этой статье объяснялись различные способы удаления базы данных PostgreSQL.

Как удалить базу данных postgresql в Linux

спросил

Изменено 2 года, 8 месяцев назад

Просмотрено 19 тысяч раз

Я пытаюсь изучить postgresql в Linux, используя интерфейс командной строки.

Некоторое время назад я добавил несколько баз данных, следуя некоторым руководствам (с тех пор я забыл все, чему научился).

Теперь я хочу удалить эти базы данных.

Я предположил, что должен делать это с помощью psql, интерфейса командной строки для postgresql.

В следующем выводе командной строки вы можете увидеть, что я пытался сделать, и что ничего из этого не увенчалось успехом.

 psql (9.5.6)
Введите "помощь" для помощи.
postgres=#\список
                                  Список баз данных
   Имя | Владелец | Кодирование | Разобрать | Тип | Права доступа
-----------+----------+-----------+-------------+-- --------------------------+-----------------------
 постгрес | постгрес | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 |
 шаблон0 | постгрес | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 | =с/постгрес +
           | | | | | postgres=CTc/postgres
 шаблон1 | постгрес | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 | =с/постгрес +
           | | | | | postgres=CTc/postgres
 тестовая база данных | постгрес | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 |
(4 ряда)
postgres=# dropdb template1
postgres-#\список
                                  Список баз данных
   Имя | Владелец | Кодирование | Разобрать | Тип | Права доступа
-----------+----------+-----------+-------------+-- --------------------------+-----------------------
 постгрес | постгрес | UTF8 | en_CA. UTF-8 | en_CA.UTF-8 |
 шаблон0 | постгрес | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 | =с/постгрес +
           | | | | | postgres=CTc/postgres
 шаблон1 | постгрес | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 | =с/постгрес +
           | | | | | postgres=CTc/postgres
 тестовая база данных | постгрес | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 |
(4 ряда)
postgres-# УДАЛИТЬ БАЗУ ДАННЫХ шаблон1
postgres-#\список
                                  Список баз данных
   Имя | Владелец | Кодирование | Разобрать | Тип | Права доступа
-----------+----------+-----------+-------------+-- --------------------------+-----------------------
 постгрес | постгрес | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 |
 шаблон0 | постгрес | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 | =с/постгрес +
           | | | | | postgres=CTc/postgres
 шаблон1 | постгрес | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 | =с/постгрес +
           | | | | | postgres=CTc/postgres
 тестовая база данных | постгрес | UTF8 | en_CA.UTF-8 | en_CA.UTF-8 |
(4 ряда)
 
  • Linux
  • база данных
  • postgresql
  • psql

1

Да,

DROP DATABASE template1;

и не забудьте сделать резервную копию вашей базы данных:

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *