SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 09.08.2009 20:46:12

DJK
Завсегдатай
Зарегистрирован: 09.08.2009
Сообщений: 32

MySQL и протоколирование запросов к БД

Немножко раскидав мысли в голове возник вопрос - "...а нет ли такой возможности как узнать от какого IP к серверу БД пришел запрос?"
Требуется в запросах на insert, update протоколировать в БД с какой машины было произведено действие.
Объясните можно ли как-то получать эту информацию.

OS: WinXP
MySQL: 5.1

Неактивен

 

#2 10.08.2009 13:43:53

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: MySQL и протоколирование запросов к БД

Конкретно IP — нет, такой возможности нету. Однако, Вы можете завести отдельно пользователей
для каждого IP, с которого разрешен доступ, и смотреть на имена пользователей:

[aquatica] root (none) > select current_user;
+----------------+
| current_user   |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

Ну и к INSERT/UPDATE, соответственно, прописать триггеры, которые будут логировать эту строку.

Неактивен

 

#3 10.08.2009 16:06:22

DJK
Завсегдатай
Зарегистрирован: 09.08.2009
Сообщений: 32

Re: MySQL и протоколирование запросов к БД

К сожалению создавать пользователя для каждого отдельного IP не получится, ибо это будет не эффективно (с точки срения по от имени которого будут выполняться действия на сервере) и трудности переносимости программой среды на такой новый уклад-кофиг.

в общем, жаль, очень жаль... придется делать программными средствами.

Неактивен

 

#4 10.08.2009 16:36:40

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: MySQL и протоколирование запросов к БД

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

--

Подумал, что в MySQL 5.1 можно получить адрес и другим способом:
SELECT HOST FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = CONNECTION_ID();

Ну или SHOW PROCESSLIST, но его вывод в триггере не запишешь...

Неактивен

 

#5 11.08.2009 21:58:22

DJK
Завсегдатай
Зарегистрирован: 09.08.2009
Сообщений: 32

Re: MySQL и протоколирование запросов к БД

paulus

Спасибо, второй вариант как раз то, что надо.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson