|
| 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.
| |
|
|