IP address

Salve!

Come faccio a ottenere da mysql l'IP address?

Per lo user c'è

select user();

ma come si ottiene l'host nella command line??

Grazie

Claudia

inviato 10 anni fa
malcico
X 0 X

Ti serve l'IP del server MySQL o del client che si connette ad esso?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Del client che si connette ad esso.

Grazie

risposto 10 anni fa
malcico
X 0 X

la connessione avviene direttamente o attraverso PHP?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

La connessione avviene direttamente dalla command line di mysql, il problema è che devo creare un db solamente attraverso lo script e per gestire gli errori ho creato una tabella (errori) in cui deve comparire l'host, l'user la data e l'ora in cui si è verificato l'errore!

Lo script della tabella è:

DROP TABLE IF EXISTS `Scamillo`.`Errori`;

CREATE TABLE `Scamillo`.`Errori` (

  `id` INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

  `msg` VARCHAR(100),

  `data_e_ora` DATETIME NULL,

  `user_ID` VARCHAR(50) NULL,

  `host` VARCHAR(50) NULL 

)

ENGINE = INNODB;

Per quanto riguarda data e ora esiste (select NOW()), l'user_id (select user()) ma come faccio a conoscere l'IP?

Grazie ancora

Claudia

risposto 10 anni fa
malcico
X 0 X

ma la query di inserimento dati nella tabella "errori" la esegue uno script PHP?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

No la faccio eseguire dalla command line attraverso il comando 'source nomefile.txt;'

risposto 10 anni fa
malcico
X 0 X

non credo si possa fare direttamente in SQL  :dunno:

C'è comunque un modo per avere la lista degli utenti (ed i rispettivi host) attualmente connessi a MySQL:

show processlist;

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ho visto che nella documentazione C API esiste questo costrutto:

char *mysql_get_host_info(MYSQL *mysql). Ne riporto la descrizione:

22.2.3.29. mysql_get_host_info()

char *mysql_get_host_info(MYSQL *mysql)

Description

Returns a string describing the type of connection in use, including the server hostname.

Ora io ho provato a usarlo in questo modo:

create database IF NOT EXISTS mio

CHARACTER SET latin1 COLLATE latin1_swedish_ci;

DROP TABLE IF EXISTS `mio`.`prova`;

CREATE TABLE `mio`.`prova` (

  `key` INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

  Id VARCHAR(50) NULL

    )

ENGINE = INNODB;

DROP TABLE IF EXISTS `mio`.`Errori`;

CREATE TABLE `mio`.`Errori` (

  `id` INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

  `msg` VARCHAR(100),

  `data_e_ora` DATETIME NULL,

  `user_ID` VARCHAR(50) NULL,

  `host` VARCHAR(50) NULL 

)

ENGINE = INNODB;

use mio;

delimiter //

create trigger checkprova

  before insert on prova

  for each row

  begin

     IF NEW.id > 1 THEN

     INSERT INTO Errori (host) VALUES (mysql_get_host_info()) ; 

    END IF;

end; //

delimiter ;

il problema è che nn funziona, infatti nn so come si usano le C API,mi puoi aiutare??

Grazie

risposto 10 anni fa
malcico
X 0 X

stiamo parlando di 2 mondi diversi, l'SQL e le API (librerie) C di MySQL. Queste ultime servono a realizzare un programma in C che sia in grado di interagire con MySQL.

Infatti l'estensione mysql usata da PHP per comunicare con MySQL si basa proprio su queste API.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda