[PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Haiyan Lin
大家好, 我用Apache+Mod_perl +MySQL +Mason的时候碰到一个问题,请问大家,改如何解 决。谢谢。 用DBI链接MySQL,在命令行执行没问题,但在Apache环境中用Mod_perl执行,报错 Can't connect to local MySQL server through socket '/tmp/mysql.sock' 代码如下 #!/usr/bin/perl use DBI; my $dbh = DBI->connect("dbi:mysql:host=localhost:datase=seedBase:mysql_socket=/tmp

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Li, Zhen
Hi, 建议先确认一下, 使用你在下面perl代码中的user/password, 本地是否可以直接访问mysql. 如果确认可以访问,再调试dbi. 加油 2013/1/30 Haiyan Lin : > 大家好, > > 我用Apache+Mod_perl +MySQL +Mason的时候碰到一个问题,请问大家,改如何解 决。谢谢。 > > 用DBI链接MySQL,在命令行执行没问题,但在Apache环境中用Mod_perl执行,报错 > Can't connect to local MySQL server through socket '/tmp/mysql.sock' >

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 夏凯
On 2013年01月30日 07:22, Haiyan Lin wrote: 报错 Can't connect to local MySQL server through socket '/tmp/mysql.sock' 应该是socket文件不对,你ps -fe|grep mysqld看下mysqld的socket,比如debian 默认 是--socket=/var/run/mysqld/mysqld.sock,如果没有指定的话,可以用 netstat -an|grep mysqld看下mysqld现在用的是哪个socket文件。 -- 您收到此邮件是因为您订阅了 Goo

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Haiyan Lin
谢谢回复,本地是可以链接的 On 01/30/2013 08:38 AM, Li, Zhen wrote: Hi, 建议先确认一下, 使用你在下面perl代码中的user/password, 本地是否可以直接访问mysql. 如果确认可以访问,再调试dbi. 加油 2013/1/30 Haiyan Lin : 大家好, 我用Apache+Mod_perl +MySQL +Mason的时候碰到一个问题,请问大家,改如何解 决。谢谢。 用DBI链接MySQL,在命令行执行没问题,但在Apache环境中用Mod_perl执行,报错 Can't connect to local

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Anthony WU
如果你是使是 Linux 而 selinux �]有�P掉的��,你可以修改 selinux 的�O定, setsebool -P httpd_can_network_connect true Original Message Subject: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱 socket的错 From: Haiyan Lin To: perlchina@googlegroups.com Date: 30/1/2013 7:22 > 大家好, > > 我用Apache+Mod_per

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Haiyan Lin
谢谢回复。我启动MySQL的命令是“mysqld_safe --user=mysql &” -fe|grep mysqld的结果如下: $ ps -fe |grep mysqld root 2011 1957 0 08:54 pts/0 00:00:00 /bin/sh /usr/local/bin/mysqld_safe --user=mysql mysql 2089 2011 0 08:54 pts/0 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 夏凯
On 2013年01月30日 09:02, Haiyan Lin wrote: netstat -an|grep mysqld的结果如下: $ netstat -an | grep mysqld $ netstat -an | grep mysqld_safe 从这里看的话,mysql没有产生socket,有可能是用的tcp连接,或者是不同系统下 的netstat有点不同,所以没显示。 命令行登陆mysql后用\s看下UNIX socket:后面的是什么,我这是/var/run/mysqld /mysqld.sock。 -- 您收到此邮件是因为您订阅了 Google 网上论坛的

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 夏凯
On 2013年01月30日 09:07, 夏凯 wrote: On 2013年01月30日 09:02, Haiyan Lin wrote: netstat -an|grep mysqld的结果如下: $ netstat -an | grep mysqld $ netstat -an | grep mysqld_safe 从这里看的话,mysql没有产生socket,有可能是用的tcp连接,或者是不同系统 下 的netstat有点不同,所以没显示。 命令行登陆mysql后用\s看下UNIX socket:后面的是什么,我这是/var/run /mysqld /mysqld.so

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Haiyan Lin
On 01/30/2013 09:07 AM, 夏凯 wrote: > On 2013年01月30日 09:02, Haiyan Lin wrote: >> netstat -an|grep mysqld的结果如下: >> >> $ netstat -an | grep mysqld >> $ netstat -an | grep mysqld_safe > 从这里看的话,mysql没有产生socket,有可能是用的tcp连接,或者是不同系统 > 下 的netstat有点不同,所以没显示。 > 命令行登陆mysql后用\s看下UNIX socket:后面的是什么,我这是/var/run >

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Haiyan Lin
On 01/30/2013 09:10 AM, 夏凯 wrote: > On 2013年01月30日 09:07, 夏凯 wrote: >> On 2013年01月30日 09:02, Haiyan Lin wrote: >>> netstat -an|grep mysqld的结果如下: >>> >>> $ netstat -an | grep mysqld >>> $ netstat -an | grep mysqld_safe >> 从这里看的话,mysql没有产生socket,有可能是用的tcp连接,或者是不同系 >> 统 下 的netstat有点不同,所以没显示。 >> 命令行登陆m

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 夏凯
On 2013年01月30日 07:22, Haiyan Lin wrote: 在命令行执行 没问题,但在Apache环境中用Mod_perl执行,报错 会不会是被apache给chroot了?你打印下根目录下有那些文件,看下。 -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 perlchina+unsubscr...@googlegroups.com。 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。 通过以下网址访问

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Haiyan Lin
On 01/30/2013 09:17 AM, 夏凯 wrote: > On 2013年01月30日 07:22, Haiyan Lin wrote: >> 在命令行执行 没问题,但在Apache环境中用Mod_perl执行,报错 > 会不会是被apache给chroot了?你打印下根目录下有那些文件,看下。 > 是指那个根目录啊 -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 perlchina+unsubscr...@googlegroups.com。 要向此网

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Haiyan Lin
On 01/30/2013 09:17 AM, 夏凯 wrote: > On 2013年01月30日 07:22, Haiyan Lin wrote: >> 在命令行执行 没问题,但在Apache环境中用Mod_perl执行,报错 > 会不会是被apache给chroot了?你打印下根目录下有那些文件,看下。 > 系统的根目录ls的结果如下 $ ls / bin boot dev etc home lib lost+found media mnt opt proc root run sbin srv sys tmp usr var -- 您收到此邮件是因为您订阅了 Google 网上论

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Zhang Jun
ls -l /tmp/mysql.sock 2013/1/30 Haiyan Lin > On 01/30/2013 09:17 AM, 夏凯 wrote: > > On 2013年01月30日 07:22, Haiyan Lin wrote: > >> 在命令行执行 没问题,但在Apache环境中用Mod_perl执行,报错 > > 会不会是被apache给chroot了?你打印下根目录下有那些文件,看下。 > > > 系统的根目录ls的结果如下 > $ ls / > bin boot dev etc home lib lost+found media mnt opt proc ro

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Zhang Jun
或者是因为你的dsn写错了? 你贴的代码里写的是datase=seedBase 2013/1/30 Zhang Jun > ls -l /tmp/mysql.sock > > > 2013/1/30 Haiyan Lin > >> On 01/30/2013 09:17 AM, 夏凯 wrote: >> > On 2013年01月30日 07:22, Haiyan Lin wrote: >> >> 在命令行执行 没问题,但在Apache环境中用Mod_perl执行,报错 >> > 会不会是被apache给chroot了?你打印下根目录下有那些文件,看下。 >> > >> 系统的根目录

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 夏凯
不是用ls,是你在apache的mod_perl里面打印出来,我怀疑mod_perl工作的目录已经被chroot到安全目录了,这样就看不到/tmp/mysql.sock这个文件了。 2013/1/30 Haiyan Lin > On 01/30/2013 09:17 AM, 夏凯 wrote: > > On 2013年01月30日 07:22, Haiyan Lin wrote: > >> 在命令行执行 没问题,但在Apache环境中用Mod_perl执行,报错 > > 会不会是被apache给chroot了?你打印下根目录下有那些文件,看下。 > > > 系统的根目录ls的结果如下

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Haiyan Lin
谢谢,改过来了,还是无效,应该是其它的什么原因。 On 01/30/2013 09:49 AM, Zhang Jun wrote: > 或者是因为你的dsn写错了? 你贴的代码里写的是datase=seedBase > > 2013/1/30 Zhang Jun mailto:gb2...@gmail.com>> > > ls -l /tmp/mysql.sock > > > 2013/1/30 Haiyan Lin > > > On 01/30/2013 09:17 AM, 夏凯 wrote

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Haiyan Lin
怎么打印啊 print join "\n", (`ls /`) 吗? On 01/30/2013 09:56 AM, 夏凯 wrote: > 不是用ls,是你在apache的mod_perl里面打印出来,我怀疑mod_perl工作的目录 > 已经被 chroot到安全目录了,这样就看不到/tmp/mysql.sock这个文件了。 > > > 2013/1/30 Haiyan Lin mailto:linhy0...@gmail.com>> > > On 01/30/2013 09:17 AM, 夏凯 wrote: > > On 2013年01月30日 07:22, H

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 夏凯
On 2013年01月30日 10:06, Haiyan Lin wrote: 怎么打印啊 print join "\n", (`ls /`) 吗? 应该这样就可以了,不过最好用File::Spec来看下/下面的文件,然后根据这个确 认下是被chroot到哪个目录,再把mysql的 sock改到那个目录下,就能连接了。 比如apache把/给chroot到/data,那么你在apache访问/tmp/mysql.sock实际上是 访问磁盘上的/data /tmp/mysql.sock。 或者直接用-e /tmp/mysql.sock看下文件是否存在,这样可以确认是不是被chro

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 wd
呃。。为啥一定要用 socket 连接呢?。。。 通过 tcp 端口不也挺好么。。 2013/1/30 夏凯 > On 2013年01月30日 10:06, Haiyan Lin wrote: > >> 怎么打印啊 >> >> print join "\n", (`ls /`) >> >> 吗? >> > 应该这样就可以了,不过最好用File::Spec来看下/**下面的文件,然后根据这个确 认下是被chroot到哪个目录,再把mysql的 > sock改到那个目录下,就能连接了。 > 比如apache把/给chroot到/data,**那么你在apache访问/tmp/mysql.

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Taurus
条件允许的情况下用这个笨方法试下: updatedb locate mysql.sock On 2013/1/30 10:05, Haiyan Lin wrote: > 谢谢,改过来了,还是无效,应该是其它的什么原因。 > > On 01/30/2013 09:49 AM, Zhang Jun wrote: >> 或者是因为你的dsn写错了? 你贴的代码里写的是datase=seedBase >> >> 2013/1/30 Zhang Jun mailto:gb2...@gmail.com>> >> >> ls -l /tmp/mysql.sock >> >> >> 20

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Haiyan Lin
用TCP端口连,要怎么操作啊 On 01/30/2013 10:26 AM, wd wrote: > 呃。。为啥一定要用 socket 连接呢?。。。 > 通过 tcp 端口不也挺好么。。 > > > 2013/1/30 夏凯 mailto:walke...@gmail.com>> > > On 2013年01月30日 10:06, Haiyan Lin wrote: > > 怎么打印啊 > > print join "\n", (`ls /`) > > 吗? > > 应该这样就可以了,不过最好用File::Spec来看下/

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 夏凯
On 2013年01月30日 10:35, Taurus wrote: 条件允许的情况下用这个笨方法试下: updatedb locate mysql.sock /tmp/mysql.sock存在,否则命令行就不能登陆了。 -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 perlchina+unsubscr...@googlegroups.com。 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。 通过以下网址访问此论坛

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Haiyan Lin
On 01/30/2013 10:37 AM, 夏凯 wrote: > On 2013年01月30日 10:35, Taurus wrote: >> 条件允许的情况下用这个笨方法试下: >> updatedb >> locate mysql.sock > /tmp/mysql.sock存在,否则命令行就不能登陆了。 > 是的,用命令行执行目有问题 -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 perlchina+unsubscr...@googlegroups.co

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 夏凯
On 2013年01月30日 10:26, wd wrote: 呃。。为啥一定要用 socket 连接呢?。。。 通过 tcp 端口不也挺好么。。 问题他代码里面用的就是socket,而且tcp的话一个效率低,一个防火墙可能拦 截,一个是mysql的帐号就不一样 了,root@127.0.0.1和root@localhost是两个帐号。 -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 perlchina+unsubscr...@googlegroups.com

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 wd
$dsn = "DBI:mysql:database=$database;host=$hostname;port=$port"; $dbh = DBI->connect($dsn, $user, $password); http://search.cpan.org/~capttofu/DBD-mysql-4.022/lib/DBD/mysql.pm 2013/1/30 Haiyan Lin > 用TCP端口连,要怎么操作啊 > > > > On 01/30/2013 10:26 AM, wd wrote: > > 呃。。为啥一定要用 socket 连接呢?。。

Re: [PerlChina] 用DBI链接MySQL 在命令行执行没问题,通过Apache执行抱socket的错

2013-01-29 文章 Haiyan Lin
On 01/30/2013 10:38 AM, 夏凯 wrote: > On 2013年01月30日 10:26, wd wrote: >> 呃。。为啥一定要用 socket 连接呢?。。。 >> 通过 tcp 端口不也挺好么。。 >> > 问题他代码里面用的就是socket,而且tcp的话一个效率低,一个防火墙可能拦 > 截,一个是mysql的帐号就不一样 了,root@127.0.0.1和root@localhost是两个 > 帐号。 > 两个账号都试过了,还是一样 -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要退订