[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Relaying MySQL Socket to a remote tcp mysql server



Hello,

... Okay, I am one big big mysql newbie.

In fact, I tested it all using the "root" (eg: the user with all privileges) user. Not regular users. And everything wnet fine, yeah.

In fact, all I had to do was to refresh the privileges, or restart the mysql server, etc etc... Mysql was still using the former privileges.
The socat thing works.

Okay guys, sorry for wasting your time, i solved my problem on my own :)

See you,

JC

Jean-Christophe Montigny wrote:
Hello,

I currently have a server that serves primarily webpages. As a matter of fact, web applications make intensive use of DB backends, and my DB is (surprisingly!) MySQL.

Currently the DB server is hosted on the same machine as the web server.
I would like to move the db server to another machine.
Aside from the permission, which is a trivial problem (i can simply move permissions from 'localhost' to '%' or the name of the webserver machine in mysql authentication system) I would like the move to be transparent for users, as is, I'd like them not to have to change their settings and still use 'localhost' as the address of the db server in their web applications configuration.

PHP uses the mysql socket. My problem is to redirect the socket traffic to the remote tcp server.

I have taken a look at sqlrelay, but it seems to be really heavy for my small problem. I've tried it, it created the socket, but i didn't really get the user / pass thing for listener / db backend.

I then took a look at socat. It created the socket file well, it redirected everything. I ran local tests, as is, using the mysql client, that accessed the local socket that was redirected to the remote mysql server. Everything ran fine.

But then, the php applications crashed... They cannot connect to the server... I don't know why. It works for the mysql cli client, but not for the php application...

So, here comes my question : is there some specific options to tell socat for redirecting a mysql socket in particular, or is there another solution ? that is simple ?

Here are the lines I used for socat :

/usr/bin/socat -d -lf/var/log/socat.log \
UNIX-LISTEN:/var/run/mysqld/mysqld.sock,reuseaddr,fork,unlink-early,mode=777,su=nobody,user=mysql,group=mysql \
TCP4:bdd.localnet.loc:3306 &

/usr/bin/socat -d -lf/var/log/socat.log \
TCP4-LISTEN:3306,reuseaddr,fork,bind=localhost \
TCP4:bdd.localnet.loc:3306 &

Here are the lines in the socat.log file that appear for some webapps :

2005/12/14 02:27:42 socat[16532] W shutdown(4, 2): Transport endpoint is not connected 2005/12/14 02:28:17 socat[16534] W shutdown(4, 2): Transport endpoint is not connected 2005/12/14 02:32:26 socat[16589] W shutdown(4, 2): Transport endpoint is not connected

Thanks a lot,


--
Jean-Christophe Montigny
Etudiant de troisième année à Grenoble Ecole de Management
Actuellement en parcours ingénieur à l'Ecole Nationale Supérieure de Télécommunications de Bretagne
begin:vcard
fn:Jean-Christophe Montigny
n:Montigny;Jean-Christophe
org;quoted-printable:Association Pl@n=C3=A8tes
adr;quoted-printable:;;12, rue Pierre S=C3=A9mard;Grenoble;FR;38000;France
email;internet:jcm@assoces.com
title:Responsable Com Web
x-mozilla-html:FALSE
url:http://planetes.assoces.com/
version:2.1
end:vcard


Reply to: