/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Forbindelse til MySQL via socket
Fra : Brian Fisker [8900]


Dato : 30-01-05 11:33

Hvordan laver man socket connections til MySQL som alternativ til TCP/IP
connections? Pt. kører jeg via localhost:3306, men vil gerne undgå den åbne
netværksport. Hvordan laves den initielle forbindelse i Java?

Mvh
Mandal



 
 
Søren Mors (30-01-2005)
Kommentar
Fra : Søren Mors


Dato : 30-01-05 21:46

Brian Fisker [8900] wrote:
> Hvordan laver man socket connections til MySQL som alternativ til TCP/IP
> connections? Pt. kører jeg via localhost:3306, men vil gerne undgå den åbne
> netværksport. Hvordan laves den initielle forbindelse i Java?

Nu ved jeg ikke noget om MySQL, men det skal da ikke forhindre mig i at
svare

Sockets bruger altså også TCP/IP, så det får du ikke noget ud af. Hvis
databasen kører på en anden maskine end klienten slipper du ikke for at
have en åben port.

Søren Mors

Brian Fisker [8900] (30-01-2005)
Kommentar
Fra : Brian Fisker [8900]


Dato : 30-01-05 22:33

"Søren Mors" <soerenmors@stofanet.dk> skrev i en meddelelse
news:41fd413c$0$29434$ba624c82@nntp06.dk.telia.net...
> Sockets bruger altså også TCP/IP, så det får du ikke noget ud af. Hvis
> databasen kører på en anden maskine end klienten slipper du ikke for at
> have en åben port.

Maskinen kører lokalt - Og det burde ifølge MySQLs manual være muligt at
tilgå MySQL serveren uden brug af TCP/IP.

\Mandal



Troels Arvin (30-01-2005)
Kommentar
Fra : Troels Arvin


Dato : 30-01-05 21:49

On Sun, 30 Jan 2005 11:32:35 +0100, Brian Fisker [8900] wrote:

> Hvordan laver man socket connections til MySQL som alternativ til TCP/IP
> connections? Pt. kører jeg via localhost:3306, men vil gerne undgå den åbne
> netværksport. Hvordan laves den initielle forbindelse i Java?

JDBC kræver brug af TCP-sockets. Jeg har aldrig hørt, at JDBC skulle
understøtte unix domain sockets.

Fra en sikkerhedsmæssig synsvinkel: Hvis din MySQL kun forventes
tilgået fra lokalmaskinen, så sæt in MySQL til at lytte på 127.0.0.1 og
ikke blot ethvert interface. I my.cnf er indstillingen:

[mysqld]
bind-address=127.0.0.1

--
Greetings from Troels Arvin, Copenhagen, Denmark


Brian Fisker [8900] (30-01-2005)
Kommentar
Fra : Brian Fisker [8900]


Dato : 30-01-05 22:35

"Troels Arvin" <troels@arvin.dk> skrev i en meddelelse
news:pan.2005.01.30.20.48.30.283704@arvin.dk...
> JDBC kræver brug af TCP-sockets. Jeg har aldrig hørt, at JDBC skulle
> understøtte unix domain sockets

Kan ODBC ikke håndtere dette?

> Fra en sikkerhedsmæssig synsvinkel: Hvis din MySQL kun forventes
> tilgået fra lokalmaskinen, så sæt in MySQL til at lytte på 127.0.0.1 og
> ikke blot ethvert interface. I my.cnf er indstillingen:

Se, det kan jeg bruge til noget! Det er fra et rent sikkerhedsmæssigt
synspunkt, at jeg vil undgå den åbne port.

> [mysqld]
> bind-address=127.0.0.1

Takker :D

\Mandal



Thorbjoern Ravn Ande~ (31-01-2005)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 31-01-05 08:49

Troels Arvin <troels@arvin.dk> writes:

> JDBC kræver brug af TCP-sockets. Jeg har aldrig hørt, at JDBC skulle
> understøtte unix domain sockets.

Det afhænger af den aktuelle driver.

Der er ingenting til hinder for at lokale opkoblinger er optimeret (og
netop for mysql ville det virkelig give mening), men det er en ekstra
kompleksitet i kodebasen som det ikke er sikkert at der er nogen der
har lavet.

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn/

Lars Sherman Christe~ (31-01-2005)
Kommentar
Fra : Lars Sherman Christe~


Dato : 31-01-05 19:15

Brian Fisker [8900] wrote:
> Hvordan laver man socket connections til MySQL som alternativ til TCP/IP
> connections? Pt. kører jeg via localhost:3306, men vil gerne undgå den åbne
> netværksport. Hvordan laves den initielle forbindelse i Java?
>
> Mvh
> Mandal
>
>
Jeg har klippet lidt fra dokumentationen til MySQL, som du måske kan
bruge for at komme videre.

Med venlig hilsen
Lars

Klip fra MySQL manualen kapitel 5.2 Configuring the MySQL Server:

--skip-networking
Don't listen for TCP/IP connections at all. All interaction with
@command{mysqld} must be made via named pipes (on Windows) or Unix
socket files (on Unix). This option is highly recommended for systems
where only local clients are allowed. See section 7.5.6 How MySQL Uses DNS.

Klip fra mysqlcj 3.0.5 dokumentationen:

Connector/J also supports access to MySQL via named pipes on Windows
NT/2000/XP using the 'NamedPipeSocketFactory' as a plugin-socket factory
via the 'socketFactory' property. If you don't use a 'namedPipePath'
property, the default of '\\.\pipe\MySQL' will be used. If you use the
NamedPipeSocketFactory, the hostname and port number values in the JDBC
url will be ignored.

Adding the following property to your URL will enable the
NamedPipeSocketFactory:

socketFactory=com.mysql.jdbc.NamedPipeSocketFactory

Named pipes only work when connecting to a MySQL server on the same
physical machine as the one the JDBC driver is being used on. In simple
performance tests, it appears that named pipe access is between 30%-50%
faster than the standard TCP/IP access.

You can create your own socket factories by following the example code
in com.mysql.jdbc.NamedPipeSocketFactory, or
com.mysql.jdbc.StandardSocketFactory.

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste