Italian webserver (usbwebserver) - b4j e connessioni

micro

Well-Known Member
Licensed User
Longtime User
Salve ragazzi
qualche tempo fa mi è capitato di vedere un post (che non riesco a ritrovare) dove qualcuno di voi ha usato come server mysql, usbwebserver, che a mio parere è alquanto leggero e si comporta discretamente.
Ho un problema sulla connessione, premetto che sono pc connessi alla rete interna quindi nessun instradamento su internet.
Su un pc ho installato usbwebserver che si avvia allo startup e un programma in b4j che lavora con un DB
connettendomi appunto a usbwebserver.
Fin qui in localhost tutto ok con questa stinga di connessione:
jdbc:mysql://localhost:3307/GestDB (txtconndbinto)

Nell'altro pc stesso programma ma con stringa di connessione differente va in timeout e non si connette.
Ho provato sia ad inserire ip che nome pc ma stesso risultato
jdbc:mysql://192.168.2.23:3307/GestDB o jdbc:mysql://USER-PC:3307/GestDB

B4X:
pool.Initialize("con.mysql.jdbc.Driver", mapset.Get("txtconndbinto"), mapset.Get("txtuserconndbinto"), mapset.Get("txtpassconndbinto")) '< qui ok
Dim sql As SQL = pool.GetConnection '< qui va in timeout ed esce

Ho aperto la porta 3307 sul router ma stesso problema.
Mi sfugge qualcosa?
Grazie a tutti
 

gyruss68

Member
Licensed User
Longtime User
Ciao,
hai provato a verificare che il mysql accetti connessione da indirizzi diversi da localhost ?
 

micro

Well-Known Member
Licensed User
Longtime User
Ciao,
hai provato a verificare che il mysql accetti connessione da indirizzi diversi da localhost ?

Era la prima cosa che mi era venuta in mente ma in settaggi dove ci sono i vari file .ini non riesco a capire
quale voce potrebbe interessare le connessioni esterne.
 

micro

Well-Known Member
Licensed User
Longtime User
Ciao Luca aspettavo te....:)
No tranquillo è una svista in trascrizione non è quello il problema.
Visto che sei abituato a fare le ore piccole perchè non ti scarichi usbwebserver e fai una prova così cerchiamo di risolvere l'ennesimo problema?
Scherzo Luca, sarei grato a tutti se risolvo il problema ma nei limiti della Vs. disponibilità.
Pensavo fosse semplice e che tutto avrebbe funzionato al primo colpo ma mi sbagliavo, come spesso capita.
Log:
B4X:
Waiting for debugger to connect...
Program started.
ott 13, 2016 9:01:24 PM com.mchange.v2.log.MLog <clinit>
INFORMAZIONI: MLog clients using java 1.4+ standard logging.
ott 13, 2016 9:01:24 PM com.mchange.v2.c3p0.C3P0Registry banner
INFORMAZIONI: Initializing c3p0-0.9.2.1 [built 20-March-2013 11:16:28 +0000; debug? true; trace: 10]
ott 13, 2016 9:01:24 PM com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager
INFORMAZIONI: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 20000, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hge1bm9j1h41mrw1vs7vnm|166b4fe, debugUnreturnedConnectionStackTraces -> false, descr...
ott 13, 2016 9:01:55 PM com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask run
AVVERTENZA: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@e517aa -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
java.sql.SQLException: null,  message from server: "Host 'User-PC' is not allowed to connect to this MySQL server"
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:959)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1038)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2254)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2285)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2084)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
    at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648)
ott 13, 2016 9:01:55 PM com.mchange.v2.resourcepool.BasicResourcePool forceKillAcquires
AVVERTENZA: Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@627aa6 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.
ott 13, 2016 9:01:55 PM com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask run
AVVERTENZA: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@cfb8c0 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
java.sql.SQLException: null,  message from server: "Host 'User-PC' is not allowed to connect to this MySQL server"
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:959)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1038)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2254)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2285)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2084)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
    at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648)
ott 13, 2016 9:01:55 PM com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask run
AVVERTENZA: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1a61dbd -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
java.sql.SQLException: null,  message from server: "Host 'User-PC' is not allowed to connect to this MySQL server"
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:959)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1038)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2254)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2285)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2084)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
    at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648)
ott 13, 2016 9:01:55 PM com.mchange.v2.resourcepool.BasicResourcePool forceKillAcquires
AVVERTENZA: Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@627aa6 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.
ott 13, 2016 9:01:55 PM com.mchange.v2.resourcepool.BasicResourcePool forceKillAcquires
AVVERTENZA: Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@627aa6 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.

Ragazzi ho aperto la discussione anche sul forum "B4J Question"
 
Last edited:

sirjo66

Well-Known Member
Licensed User
Longtime User
ciao micro,
ti confermo che devi abilitare MySQL ad accettare connessioni da altri pc della rete, altrimenti accetta solo connessioni da "localhost"

Per far questo devi avere a disposizione un tool che ti permetta di accedere a MySQL e di configurarlo

Puoi usare il famosissimo phpMyAdmin ma personalmente preferisco un tool scritto in php che occupa SOLO 315 KB ed è un solo file, comodissimo quindi da installare (devi solo copiarlo nella cartella che ti interessa) e facile quindi da installare anche da eventuali clienti (ed è pure gratis)

lo scarichi da qui: https://www.adminer.org/

lo lanci, ti connetti al database, selezioni la voce "privilegi" e lì abiliti gli utenti che vuoi nell'ambito che vuoi

Sergio
 

micro

Well-Known Member
Licensed User
Longtime User
Grazie Sergio
probabilmente sbaglio io in qualcosa, sto provando a settare i privilegi da phpmyadmin di usbwebserver in privilegi ma probabilmente faccio qualcosa di sbagliato.
Ho scaricato quel file ma la mia inesperienza con il php mi ha bloccato.
Innanzitutto come lo avvio ... poi dove dici inseriscilo nella cartella che t'interessa cosa intendi?
Perchè la struttura di usbwebserver è fatta da diverse cartelle tipo apache2, mysql, phpmyadmin, root ecc.
e il database è presente in mysql\data.

Grazie per la pazienza
 

micro

Well-Known Member
Licensed User
Longtime User
Grazie a tutti ragazzi, problema risolto.
dato i privilegi direttamente da phpmyadmin decidendo quali operazioni (privilegi) è permesso fare sui dati, sulla struttura e a livello di amministrazione e
il nome host(ip).
Io ho inserito direttamente l'ip ma penso sia possibile inserire anche il nome e se inserisci "Qualsiasi" non hai restrinzioni di ip.
Però Sergio se mi spiegi comunque come utilizzare adminer_mysql.php mi fai un enorme piacere così imparo altro.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
il file adminer_mysql.php lo devi copiare sul server, nella cartella accessibile ovviamente ad Apache (più o meno dove hai phpMyAdmin, e poi ovviamente lo devi lanciare da browser
Se il tuo browser è locale dovresti avere una cartella del tipo httpdocs o cose del genere

Sergio
 

micro

Well-Known Member
Licensed User
Longtime User
il file adminer_mysql.php lo devi copiare sul server, nella cartella accessibile ovviamente ad Apache (più o meno dove hai phpMyAdmin, e poi ovviamente lo devi lanciare da browser
Se il tuo browser è locale dovresti avere una cartella del tipo httpdocs o cose del genere
Ok, grazie per la disponibilità.
 
Top