Как сбросить пароли пользователей 1C, если база на PostgreSQL. Ver 1.0

Экспорт в PDF Преобразовать страницу в формат Open Document

Дата создания: 2023/08/12 13:50 (C) mihanik

Дано

ПК под управлением ОС Linux семейства RHEL: RHEL 7 и старше, CentOS 7 и старше, Fedora… На этом ПК развёрнута СУБД PostgreSQL, в которой хранятся базы 1С 8.3. К некоторой базе 1С забыт пароль пользователя 1С с правами администратора.

Для определённости договоримся, что наша база на PostgreSQL имеет имя test6.

Надо

Восстановить пароль пользователю с правами администратора.

Решение

НИКОГДА!!!
Никогда не подавайте команды компьютеру, которые вы сами не до конца понимаете!!!

Шаг 0

Открываем терминал.

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

При помощи команды

sudo su

становимся суперпользователем root.

Шаг 1

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

Замечание.
В домашнюю папку можно не переходить, просто тогда могут выскакивать ошибки про невозможность получить доступ к какой-нибудь папке.
su postgres
cd ~

Шаг 2

Важно!
Иногда доступ к базе может быть закрыт средствами СУБД.

Разрешим доступ/подключения к базе.

psql
UPDATE pg_database SET datallowconn = true WHERE datname = 'test6';
\q

Шаг 3

Теперь подключимся к нашей базе посредством psql

psql test6

Шаг 4

Уточним структуру (типы столбцов) таблицы v8users.

# \d+ v8users
                                                            Таблица "public.v8users"
 Столбец |             Тип             | Правило сортировки | Допустимость NULL | По умолчанию | Хранилище | Сжатие | Цель для статистики | Описание 
---------+-----------------------------+--------------------+-------------------+--------------+-----------+--------+---------------------+----------
 id      | bytea                       |                    |                   |              | extended  |        |                     | 
 name    | mvarchar(64)                |                    |                   |              | extended  |        |                     | 
 descr   | mvarchar(128)               |                    |                   |              | extended  |        |                     | 
 osname  | mvarchar(128)               |                    |                   |              | extended  |        |                     | 
 changed | timestamp without time zone |                    |                   |              | plain     |        |                     | 
 rolesid | numeric(10,0)               |                    |                   |              | main      |        |                     | 
 show    | boolean                     |                    |                   |              | plain     |        |                     | 
 data    | bytea                       |                    |                   |              | extended  |        |                     | 
 eauth   | boolean                     |                    |                   |              | plain     |        |                     | 
 admrole | boolean                     |                    |                   |              | plain     |        |                     | 
 ussprh  | numeric(10,0)               |                    |                   |              | main      |        |                     | 
Метод доступа: heap
Важно!
Выяснить структуру таблицы v8users обязательно!!!

Шаг 5

На всякий случай копируем «в сторону» таблицу v8users. Копии даём имя v8usersback.
Саму таблицу v8users и users.usr переименовываем.

CREATE TABLE v8usersback AS TABLE v8users;
ALTER TABLE v8users RENAME TO v8users2;
UPDATE Params SET FileName='users.usr_old' WHERE FileName='users.usr';

Важно!
Окно терминала не закрывайте!
Мы к нему ещё вернёмся!

Шаг 6

Открываем базу 1С в конфигураторе. При входе в конфигуратор 1С пароля не спросит, т.к. на предыдущем шаге мы информацию о пользователях «спрятали» от 1С. :-)

Важно!
После входа в конфигуратор никаких действий в нём выполнять не нужно!!!

При запуске конфигуратор «увидит», что таблицы v8users нет и создаст новую таблицу с именем v8users.

Шаг 7

Возвращаемся к открытому терминалу.

Узнаём структуру таблицы v8users, которую создал конфигуратор.

#\d+ v8users
                                                              Таблица "public.v8users"
 Столбец |             Тип             | Правило сортировки | Допустимость NULL | По умолчанию | Хранилище | Сжатие | Цель для статистики | Описание 
---------+-----------------------------+--------------------+-------------------+--------------+-----------+--------+---------------------+----------
 id      | bytea                       |                    | not null          |              | plain     |        |                     | 
 name    | mvarchar(64)                |                    | not null          |              | extended  |        |                     | 
 descr   | mvarchar(128)               |                    | not null          |              | extended  |        |                     | 
 osname  | mvarchar(128)               |                    |                   |              | extended  |        |                     | 
 changed | timestamp without time zone |                    | not null          |              | plain     |        |                     | 
 rolesid | numeric(10,0)               |                    | not null          |              | main      |        |                     | 
 show    | boolean                     |                    | not null          |              | plain     |        |                     | 
 data    | bytea                       |                    | not null          |              | extended  |        |                     | 
 eauth   | boolean                     |                    |                   |              | plain     |        |                     | 
 admrole | boolean                     |                    |                   |              | plain     |        |                     | 
 ussprh  | numeric(10,0)               |                    |                   |              | main      |        |                     | 
 email   | mvarchar(128)               |                    |                   |              | extended  |        |                     | 
Индексы:
    "v8users_pkey1" PRIMARY KEY, btree (id)
    "byeauth" btree (admrole, eauth)
    "byemail_v8users" btree (email)
    "byname" btree (name)
    "byosname" btree (osname)
    "byrolesid" btree (rolesid)
    "byshow" btree (show)
    "byusdescr" btree (ussprh, descr)
    "byusemail_v8users" btree (ussprh, email)
    "byusname" btree (ussprh, name)
    "byusosname" btree (ussprh, osname)
Метод доступа: heap
Сравниваем структуру прежней таблицы v8users и той, что создал конфигуратор.
Видим, что в структуре появился новый столбец email с типом mvarchar(128).
Запоминаем этот факт!!!

Шаг 8

Удаляем созданную конфигуратором таблицу v8users и возвращаем на место прежние v8users и users.usr

DROP TABLE v8users;
ALTER TABLE v8users2 RENAME TO v8users;
UPDATE Params SET FileName='users.usr' WHERE FileName='users.usr_old';

Теперь у нас изначальная таблица вернулась на место, однако, конфигуратор ожидает наличия в ней столбца email, который отсутствует.

Создадим этот столбец и можем выходить из psql.

ALTER TABLE v8users ADD COLUMN email VARCHAR(128) NOT NULL DEFAULT 'no-email@example.com';
\q
Если этого не сделать, то в дальнейшем можете получить ошибку:

Всё. Терминал можно закрывать, он нам больше не нужен.

Шаг 9

Возвращаемся в конфигуратор 1С и в меню выбираем «Администрирование→Пользователи».

В списке пользователей ищем нужного, кликаем по нему правой кнопкой мыши, в выпавшем меню выбираем пункт «Изменить».

Настоятельно рекомендую редактировать существующего пользователя, а не создавать нового, т.к. во время создания нового пользователя вы можете получить ошибку.

Если есть необходимость создать нового пользователя, это вы вполне сможете сделать позже зайдя штатными средствами в конфигуратор с логином и паролем.

Шаг 10

Устанавливаем пользователю пароль, нажимаем «ОК». Закрываем все лишние окна.

Всё! Мы молодцы!

Использованные материалы

Наверх

В моей WIKI постоянно ведётся какая-то работа со статьями.
Если у вас возникли вопросы или замечания,
можете их отправлять на почту support@mihanik.net
Только авторизованные участники могут оставлять комментарии.
программное_обеспечение/1с_предприятие_8/администрирование_1с/как_сбросить_пароли_пользователей_1c_если_база_на_postgresql.txt · Последнее изменение: 2026/01/27 09:50 — mihanik
Яндекс.Метрика