заметки об администрировании и программировании (python, ruby, php). Траблшутинг в «примерах» и HOWTO.

😎 О себе | 📚 Литература и ресурсы | ⚡ Все посты | 📮 E-mail
5 заметок с тегом

SQL

Создание пользователя PostgreSQL с правами Read Only

Создание пользователя PostgreSQL с правами Read Only

Для доступа к одной из баз данных, потребовалось создать пользователя с правами readonly, решение для PostgreSQL 9.6+ было найдено на stackoverflow


CREATE USER Read_Only_User  WITH ENCRYPTED PASSWORD 'STRONG_PASSWORD';
GRANT USAGE ON SCHEMA public to Read_Only_User;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO Read_Only_User;

GRANT CONNECT ON DATABASE DATABASE_TO_READ to Read_Only_User;

\c DATABASE_TO_READ

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO Read_Only_User;
GRANT USAGE ON SCHEMA public to Read_Only_User; 
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO Read_Only_User;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO Read_Only_User;


DATABASE_TO_READ — база данных, куда нужно дать доступ на чтение
Read_Only_User — пользователь используемый для доступа
STRONG_PASSWORD — пароль пользователя Read_Only_User
Источник

 Нет комментариев    27   1 мес   PostgreSQL   SQL

ERROR: database «database» is being accessed by other users

ERROR:  database "database" is being accessed by other users

При удалении БД в PostgreSQL, если открыто соединение — будем получать следующую ошибку:


postgres=# drop database database;
ERROR:  database "database" is being accessed by other users
DETAIL:  There is 1 other session using the database.


Чтобы удалить БД завершаем соединение (вариант попробовать перезапустить сервер, если можно, да и у меня даже после этого БД не отпустило) с помощью запроса ниже от суперпользователя и дропаем БД


SELECT 
    pg_terminate_backend(pid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection!
    pid <> pg_backend_pid()
    -- don't kill the connections to other databases
    AND datname = 'database_name'
    ;


где database_name имя БД

 Нет комментариев    48   2 мес   database   drop   Error   PostgreSQL   SQL
 Нет комментариев    31   5 мес   PostgreSQL   SQL

В таблице sql-базы отсутствует уникальный столбец

После переноса БД с сервера с древним ПО на VDS возникла следующая ошибка при выполнении запроса к БД: "Данная таблица не содержит уникального столбца. Изменение сетки, выставление галочки, редактирование, копирование и удаление не доступно." ("This table does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available."). Открываем нужную таблицу и выполняем следующий запрос:

ALTER TABLE tablename add newid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

где tablename имя Вашей таблицы.   Вот и все, проблема решена
 Нет комментариев    30   2017   SQL

Если бекап БД сделан через mysqldump —all-databases

Вытащить нужную БД можно, если сделан бекап БД с помощью свойства mysqldump —all-databases Для этого воспользуемся sed'ом:

sed -n -e '/CREATE DATABASE.*db_name/,/CREATE DATABASE/p' all-databases.sql > base.sql

  db_name — БД, которую нужно вытащить
 Нет комментариев    13   2016   database   sed   SQL