Как вытащить домен из сайта sql
Перейти к содержимому

Как вытащить домен из сайта sql

Как получить имя доменой учетной записи в MS SQL

Возможно ли в запросе получить имя учетки не той от чего имени выполняется запрос, а той под кем залогинены на ПК? С БД работает ПО от единого прописанного пользователя, на столбец повесил триггер и хочу понимать какой юзер выполняет действия, к исходному коду ПО доступа нет.

Отслеживать
Winteriscoming
задан 22 ноя 2016 в 8:23
Winteriscoming Winteriscoming
2,337 1 1 золотой знак 18 18 серебряных знаков 46 46 бронзовых знаков

Насколько я знаю, то если аутентификация на сервер виндовая, то без проблем через suser_sname() . MSDN. Вот статья по именам пользователей MS SQL: technet.microsoft.com/ru-ru/library/ms191126(v=sql.105).aspx

22 ноя 2016 в 8:28
@BlackWitcher дополнил вопрос.
22 ноя 2016 в 8:30
запрос выполняется всегда от имени пользователя базы данных, независимо от пользователя ОС
22 ноя 2016 в 8:32
@Anatol это понятно, я подумал может есть инструмент который определяет пользователя ОС.
22 ноя 2016 в 8:50

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Ответ на ваш вопрос — нет. Штатными средствами — никак.

Логика такая — сервер, это отдельная изолированная сущность, которая знать не знает ничего о том, кто и под каким именем работает на компьютере.

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

Сам сервер знает имя и пароль этого пользователя, и не более. Для того, что бы сервер смог вам выдать имя пользователя, который у вас залогинен в операционной системе, MS SQL должен уметь опрашивать на этот счет операционную систему. Но зачем это ему? Так что сервер не умеет опрашивать винду и узнавать какой пользователь там залогинен, ибо как это вообще относится к функциям сервера и базам данных? Никак.

Но есть один момент, когда для подключению к серверу используется механизм аутентификации Windows. В этом случае система аутентификации Windows и MS-SQL взаимодействуют. В этом случае для авторизации на сервере используются учетные данные Windows. И только в этом случае имя пользователя в Windows и на MS SQL Server совпадают.

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

Итого, получаем, что варианты у нас крайне ограничены:

  1. Подключаться к БД через windows-аутентификацию, тогда имя домена и учетной записи будет передано внутрь сервера. Но это не всегда возможно.
  2. Передавать серверу имя домена и пользователя из клиента самостоятельно (нужно подумать, каким именно способом). 2а. Можно попробовать заставлять сервер самостоятельно, каждый раз при подключении пользователя выполнять какой-то внешний инструмент (программу), которая получала бы имя пользователя Windows, подключалась к серверу, и записывала бы в отдельную таблицу имя виндового пользователя, который подключился к серверу.

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

Перенос сайта между доменами

Вы решили переименовать свой сайт и выбрали для него новый домен. Чтобы не потерять трафик, добавьте его как дополнительный к текущему в Панели управления. Это можно сделать на странице управления сайтом в разделе «Домены сайта». В таком случае сайт будет открываться по двум именам — старому и новому.

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

Порядок переноса зависит от конфигурации сайта. Если это набор html-файлов, просто скопируйте их в корневую директорию нового домена. Если для разработки использовалась CMS, потребуется внести изменения в файлы и базу данных.

Перенос базы данных

Вспомните, устанавливали ли вы CMS вручную или с помощью раздела «Установка приложений» в Панели управления? Если вы использовали ПУ, создайте новую базу данных в разделе «Базы данных» и перенесите в нее содержимое старой базы. Если этого не сделать, при удалении старого сайта удалится и база данных — новый сайт перестанет работать.

Перейдите в PhpMyAdmin, кликните на имя БД сайта в левом столбце, нажмите «Экспорт», а затем «Вперед». Дамп сохранится на вашем компьютере.

После этого нужно импортировать дамп в новую базу. Для этого кликните на имя БД в левом столбце PhpMyAdmin, нажмите «Импорт», а затем «Обзор». Найдите скачанный ранее дамп (файл с расширением .sql) на вашем компьютере и нажмите «Вперед». Дождитесь завершения импорта: база данных нового сайта больше не зависит от установленного приложения.

Теперь скопируйте файлы на новый домен.

Перенос файлов

В Файловом менеджере выберите старый домен в выпадающем списке «Переход к сайту», отметьте все содержимое папки public_html и нажмите «Копировать». Перейдите в корневой каталог нового домена, нажмите «Вставить». Эти же действия можно выполнить, подключившись по FTP.

Если вы создавали новую базу данных для сайта, найдите его конфигурационный файл и укажите данные для подключения к БД.

Все почти готово. Осталось изменить записи с именем старого домена в файлах и базе данных.

Замена ссылок

Перед тем, как приступить к замене ссылок, создайте резервную копию в разделе «Сайты» → «Резервные копии» Панели управления. Если что-то пойдет не так, вы сможете быстро восстановить изначальное состояние сайта.

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

[username@server ~]$ cd domains/new_domain.ru/
[username@server new_domain.ru]$ grep -rl old_domain.ru ./ | xargs sed -i ‘s/old_domain.ru/new_domain.ru/g’

Если в процессе переноса участвует кириллический домен, то перед заменой ссылок необходимо конвертировать его имя в punycode-кодировку. Это можно сделать с помощью команды idn:

[username@server ~]$ idn домен.рф

Результатом выполнения команды будет имя домена в punycode-кодировке:

Используйте его при замене ссылок:

[username@server new_domain.ru]$ grep -rl xn--d1acufc.xn--p1ai ./ | xargs sed -i ‘s/xn--d1acufc.xn--p1ai/new_domain.ru/g’

Для изменения ссылок в БД удобно использовать утилиту Search&Replace DB. Воспользуйтесь SSH, чтобы скачать ее.

Перейдите в корневой каталог сайта: [username@server new_domain.ru]$ cd public_html/ и выполните команду: [username@server public_html]$ git clone https://github.com/interconnectit/Search-Replace-DB/

В браузере перейдите по ссылке: http://domain.ru/Search-Replace-DB/ Заполните поля:

  • «replace» – что ищем (старый домен);
  • «with» – на что заменяем (новый домен);
  • «database name» — название базы данных;
  • «username» — имя пользователя базы данных;
  • «pass» – пароль пользователя БД.

Нажмите «Test connection» — утилита проверит, правильно ли вы ввели данные для подключения к БД. После проверки станет активна кнопка «Search and Replace». Нажмите ее, и утилита заменит ссылки.

Проверка сайта

Проверьте работу сайта: переходите по разделам, нажимайте на ссылки. Обращайте внимание на отображение картинок, текстов и адреса в строке браузера.

Когда убедитесь, что новый сайт работает верно, обязательно удалите Search&Replace. Для этого в консоли выполните: [username@server public_html]$ rm -rf Search-Replace-DB Также удалить каталог можно с помощью Файлового менеджера или FTP.

Если вы столкнулись с трудностями — обращайтесь в поддержку. Мы поможем разобраться с проблемой или самостоятельно перенесем ваш сайт на новый домен.

Как найти и обратиться к объекту БД Домен / DOMAIN?

Очень мало информации нашел о таких объектах как «домены». Я знаю, что это примерно (маш. перевод: What is domain type in SQL?):

Доменом является определенный пользователем, названный набор значений. Когда вы объявляете столбцы в таблице SQL или параметры для хранимой процедуры, вы можете использовать домен вместо встроенного типа данных SQL, а затем этот столбец или параметр ограничивается значениями, которые удовлетворяют домену.

Занимаясь сейчас анализом спецификаций к системе, встречаю в ней часто объявление доменов. Но по факту, в базе я не вижу их как объекты, либо упоминания в коде.

Отслеживать
51.6k 200 200 золотых знаков 61 61 серебряный знак 242 242 бронзовых знака
задан 19 фев 2020 в 8:30
67 2 2 серебряных знака 8 8 бронзовых знаков
Где вы это взяли? Судя по граматическим ошибкам, это скорее всего машинный перевод.
19 фев 2020 в 10:09
так и есть, когда искал информацию, забрел на сервис Quora
20 фев 2020 в 6:41

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Начнём с термина Домен (domain) в контексте БД, цитирую:

Домен в реляционной модели данных — тип данных, то есть множество допустимых значений.

Этот термин относится более к этапу анализа и дизайна логической модели БД.

В стандарте SQL-92 появилась возможность создать домен предложением CREATE DOMAIN . Но это предложение реализовано только в некоторых СУБД, например, PostgreSQL.

В СУБД Oracle предложение CREATE DOMAIN отсутствует, поэтому вместо термина домен, чаще в ходу термин — ограничение (constraint, contrained data type). Самые часто используемые ограничения (например, по длине, набору символов) реализованны во встроенных типах данных Built-in Data Types.

Как же реализуются заложеные в логической модели данных домены, например — пол персоны, широко известный как МЖ.

Набор данных для тех, кто всё хочет попробовать сам:

insert into person values ('Маша', 'f'); insert into person values ('Паша', 'm'); insert into person values ('Саша', null); insert into person values ('Мики', 'd'); 
create table person ( name varchar2 (32), gender char (1), constraint chk_gender check (gender in ('f','m'))); 

В случае вставки недопустимого значения:

ORA-02290: check constraint (DB.CHK_GENDER) violated

Несколько не в ногу со временем, но ранее широко практиковалось хранить допустимые значеия в отдельной таблице:

create table gender (val char (1) primary key); insert into gender select trim (column_value) from xmlTable ('"f","m"'); create table person ( name varchar2 (32), gender char (1), constraint fk_gender foreign key (gender) references gender (val)); 

В случае вставки недопустимого значения:

ORA-02291: integrity constraint (DB.FK_GENDER) violated — parent key not found

Пользовательский тип данных с ограничением можно будет использовать как в SQL, так и PL/SQL контексте. Хороший пример есть уже в этой теме. Для случая с МЖ:

create or replace type genderType as object ( val char (1), constructor function genderType (val char) return self as result) final / create or replace type body genderType as constructor function genderType (val char) return self as result is begin if val not in ('f','m') then raise_application_error (-20000, 'illegal gender value >'||val||'<'); end if; self.val := val; return; end; end; / declare gender constant genderType := genderType ('d'); begin null; end; / 

Как подсчитать уникальные домены из поля адреса электронной почты в MySQL 1 мин для чтения

Вы хотите подсчитать количество доменных имен из поля вашего адреса электронной почты в mysql. Если вы работаете на PHP, вы могли бы легко это сделать, используя функцию explode и подсчитать доменов, но такой способ — очень плохая логика и требует максимального времени на выполнение, когда у вас много данных. Но в MySQL это легко сделать, используя SUBSTRING_INDEX().

SUBSTRING_INDEX() принимает строку с тремя аргументами, разделитель и число. Строка — это источник строки, разделитель для поиска в строке, а параметр числа будет искать разделитель. Если передать отрицательное значение в третьем аргументе, тогда он будет все слева целевого разделителя возвращается функцией SUBSTRING_INDEX().

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

Таблица электронных писем

+--------+--------------------------+ | id | email | +--------+--------------------------+ | 1 | [email protected] | | 2 | [email protected] | | 3 | [email protected] | | 4 | [email protected] | | 5 | [email protected] | | 6 | [email protected] | +--------+--------------------------+
Запрос mysql: SELECT SUBSTRING_INDEX(email, '@', -1) as domain_name, count(*) as total_emails FROM emails GROUP BY domain_name ORDER BY total_emails DESC
+-----------------+----------------+ | domain_name | total_emails | +-----------------+----------------+ | gmail.com | 3 | | yandex.ru | 3 | +-----------------+----------------+

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

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