I\'m having the following problem: When I try to createTcpServer with my external IP address (the PC\'s IP and not my local IP = the one we see as an output after running ip
As suggested in the command line help shown below, Protection against Remote Access advises the following:
By default this database does not allow connections from other machines when starting the H2 Console, the TCP server, or the PG server. Remote access can be enabled using the command line options
-webAllowOthers
,-tcpAllowOthers
,-pgAllowOthers
.
See the documentation for important caveats regarding these options.
Addendum: Works for me, as long as I restart the Server
after opening the firewall; you don't need the setProperty()
line at all; the LAN IP
to which your WAN_IP
forwards port 9092 should be your host IP address; then you can open a shell via your WAN_IP
:
java -cp h2.jar org.h2.tools.Shell -url
jdbc:h2:tcp://WAN_IP/~/path/to/test;ifexists=true"
Command line help:
$ java -cp .:/opt/h2/bin/h2.jar org.h2.tools.Shell -? Interactive command line tool to access a database using JDBC. Usage: java org.h2.tools.Shell Options are case sensitive. Supported options are: [-help] or [-?] Print the list of options [-url ""] The database URL (jdbc:h2:...) [-user ] The user name [-password ] The password [-driver ] The JDBC driver class to use (not required in most cases) [-sql ""] Execute the SQL statements and exit [-properties ""] Load the server properties from this directory If special characters don't work as expected, you may need to use -Dfile.encoding=UTF-8 (Mac OS X) or CP850 (Windows). See also http://h2database.com/javadoc/org/h2/tools/Shell.html $ java -cp /opt/h2/bin/h2.jar org.h2.tools.Server -? Starts the H2 Console (web-) server, TCP, and PG server. Usage: java org.h2.tools.Server When running without options, -tcp, -web, -browser and -pg are started. Options are case sensitive. Supported options are: [-help] or [-?] Print the list of options [-web] Start the web server with the H2 Console [-webAllowOthers] Allow other computers to connect - see below [-webDaemon] Use a daemon thread [-webPort ] The port (default: 8082) [-webSSL] Use encrypted (HTTPS) connections [-browser] Start a browser connecting to the web server [-tcp] Start the TCP server [-tcpAllowOthers] Allow other computers to connect - see below [-tcpDaemon] Use a daemon thread [-tcpPort ] The port (default: 9092) [-tcpSSL] Use encrypted (SSL) connections [-tcpPassword ] The password for shutting down a TCP server [-tcpShutdown ""] Stop the TCP server; example: tcp://localhost [-tcpShutdownForce] Do not wait until all connections are closed [-pg] Start the PG server [-pgAllowOthers] Allow other computers to connect - see below [-pgDaemon] Use a daemon thread [-pgPort ] The port (default: 5435) [-properties ""] Server properties (default: ~, disable: null) [-baseDir ] The base directory for H2 databases (all servers) [-ifExists] Only existing databases may be opened (all servers) [-trace] Print additional trace information (all servers) The options -xAllowOthers are potentially risky. For details, see Advanced Topics / Protection against Remote Access. See also http://h2database.com/javadoc/org/h2/tools/Server.html