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