---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ydb.tech/docs/en/yql/reference/syntax/create-secret.md?version=main
  - https://ydb.tech/docs/ru/yql/reference/syntax/create-secret.md?version=main
sourcePath: ru/core/yql/reference/syntax/create-secret.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# CREATE SECRET

Команда `CREATE SECRET` создаёт [секрет](https://ydb.tech/docs/ru/concepts/datamodel/secrets.md?version=main).

Синтаксис:

```sql
CREATE [OR REPLACE] SECRET [IF NOT EXISTS] secret_name
WITH (option = value[, ...])
```

* `OR REPLACE` — если секрет с таким именем уже существует, он будет заменён новым определением.
* `IF NOT EXISTS` — команда не возвращает ошибку, если секрет с таким именем уже существует; существующий объект останется без изменений.
* `secret_name` — имя создаваемого секрета.
* `option` — опция команды:
  * `value` — строка со значением секрета.
  * `inherit_permissions` — опция, при включении которой [права](https://ydb.tech/docs/ru/yql/reference/syntax/grant.md?version=main) на секрет наследуются от директории, в которой секрет создаётся. При отключении опции от директории наследуется только [право](https://ydb.tech/docs/ru/yql/reference/syntax/grant.md?version=main#permissions-list) `DESCRIBE SCHEMA`. Владелец секрета получает все возможные права на него в любом случае. По умолчанию — `False`.

{% note warning %}

Конструкции `OR REPLACE` и `IF NOT EXISTS` нельзя использовать одновременно.

{% endnote %}

## Разрешения

Для создания секрета требуется [право](https://ydb.tech/docs/ru/yql/reference/syntax/grant.md?version=main#permissions-list) `CREATE TABLE`.

При использовании `CREATE OR REPLACE SECRET` для существующего секрета требуется [право](https://ydb.tech/docs/ru/yql/reference/syntax/grant.md?version=main#permissions-list) `ALTER SCHEMA` на секрет, так как эта форма `CREATE` изменяет секрет. Если секрет не существует, достаточно права `CREATE TABLE` на родительскую директорию.

## Примеры

Создать секрет в корне базы с именем `secret_name` и значением `secret_value`:

```sql
CREATE SECRET secret_name WITH (value = "secret_value");
```

Создать секрет в директории `dir` в корне базы с именем `secret_name` и значением `secret_value`. Если директория `dir` не существует, она будет создана:

```sql
CREATE SECRET `dir/secret_name` WITH (value = "secret_value");
```

Создать секрет в корне базы с именем `secret_name` и значением `secret_value` с правами такими же, как у родительской директории секрета:

```sql
CREATE SECRET secret_name WITH (value = "secret_value", inherit_permissions = True);
```

Создать секрет с именем `secret_name`, только если он не существует; если он существует, существующий секрет останется без изменений:

```sql
CREATE SECRET IF NOT EXISTS secret_name WITH (value = "secret_value");
```

Создать или заменить секрет с именем `secret_name`; если он существует, он будет заменён новым определением:

```sql
CREATE OR REPLACE SECRET secret_name WITH (value = "secret_value");
```

## См. также

* [ALTER SECRET](https://ydb.tech/docs/ru/yql/reference/syntax/alter-secret.md?version=main)
* [DROP SECRET](https://ydb.tech/docs/ru/yql/reference/syntax/drop-secret.md?version=main)
