You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mod_python-dev@quetz.apache.org by Firat KUCUK <fi...@kucuk.org> on 2006/04/12 21:26:09 UTC

mysqldb error

Hi,
i wrote a simple connection script.
It works as a command line script or cgi script.
But does not work in mod_python.

import MySQLdb
conn = MySQLdb.connect(
           host   = '127.0.0.1',
           user   = 'pismikrop',
           passwd = 'pass',
           db     = 'db')
print conn
conn.close()

command-line and cgi output:
<_mysql.connection open to '127.0.0.1' at 81a304c>

mod_python output:
<_mysql.connection open to '(null)' at 82ac504>

i cannot execute MySQL queries. What should i do?


Re: mysqldb error [solved]

Posted by Firat KUCUK <fi...@kucuk.org>.
Hi Guys,
php5 uses libmysqlclient12 as default

i made symbolic link like this:

ln -s libmysqlclient.so.14.0.0 libmysqlclient.so.12

problem fixed.
thanks to all.

you are wonderful. ;)



Re: mysqldb error [solved]

Posted by Fırat KÜÇÜK <fi...@kucuk.org>.
Graham Dumpleton yazmış:

>
> On 13/04/2006, at 9:30 PM, Firat KUCUK wrote:
>
>> Hi Guys,
>> php5 uses libmysqlclient12 as default
>>
>> i made symbolic link like this:
>>
>> ln -s libmysqlclient.so.14.0.0 libmysqlclient.so.12
>>
>> problem fixed.
>
>
> I would strongly recommend against doing this as any difference in  
> the API or object
> layouts will now possibly cause PHP scripts to crash. You really  
> should rebuild one
> or the other of Python MySQL module or PHP so they have both been  
> compiled
> against the same version library.
>
> Graham
>
yes you are right,
now php mysql connection failed.

thanks.


Re: mysqldb error [solved]

Posted by Graham Dumpleton <gr...@dscpl.com.au>.
On 13/04/2006, at 9:30 PM, Firat KUCUK wrote:

> Hi Guys,
> php5 uses libmysqlclient12 as default
>
> i made symbolic link like this:
>
> ln -s libmysqlclient.so.14.0.0 libmysqlclient.so.12
>
> problem fixed.

I would strongly recommend against doing this as any difference in  
the API or object
layouts will now possibly cause PHP scripts to crash. You really  
should rebuild one
or the other of Python MySQL module or PHP so they have both been  
compiled
against the same version library.

Graham

Re: mysqldb error

Posted by Graham Dumpleton <gr...@dscpl.com.au>.
On 13/04/2006, at 8:33 PM, Firat KUCUK wrote:

> i think it is related with:
> http://www.modpython.org/FAQ/faqw.py?req=show&file=faq02.013.htp
>
> but i didn't understand.

If that is the case, it is easy to check. This is done by disabling  
the loading
into Apache of PHP support. If after commenting out the PHP lines and
doing a "stop/start" of Apache (best not to use "restart" just in  
case it doesn't
unloaded shared libraries properly) your problem doesn't go away, then
that FAQ entry is not relevant.

Graham

Re: mysqldb error

Posted by Firat KUCUK <fi...@kucuk.org>.
Hi,
SeLinux is not installed.
iptables output is :

mikropyuvasi:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source

-----------------------------------------------------

i'll commit suicide :)

i think it is related with:
http://www.modpython.org/FAQ/faqw.py?req=show&file=faq02.013.htp

but i didn't understand.


Re: mysqldb error

Posted by Deron Meranda <de...@gmail.com>.
> OperationalError: (2003, "Can't connect to MySQL server on '10.0.0.6' (111)")

Error 111 is a socket connection refused (ECONNREFUSED).  So most
likely this has nothing to do with your db username or password.  But
the ip address does look unusual.

First, does the ip 10.0.0.6 mean anything?  Is it an address of one of
your interfaces?  Use "/sbin/ip addr list" to find out.

Do you have SELinux enabled?  Run /usr/sbin/sestatus

Do you have any iptables firewall rules that may be blocking port 3306?
--
Deron Meranda

Re: mysqldb error

Posted by Firat KUCUK <fi...@kucuk.org>.
Barry Pearce yazmış:

>One extra comment on this...
>
>Firstly make sure you have upgraded to the latest version of MySQLdb - we found earlier versions less than great.
>
>Warning: If you have PHP installed it uses mysql client libraries which are OUT OF DATE - and will cause failures. Remove the php module from the server and try again.
>
>
>We use MySQL 4.1 servers quite happily from mod_python under both win32 and linux.
>  
>
>
>
> Deron Meranda wrote:
>
>>On 4/12/06, Firat KUCUK <fi...@kucuk.org> wrote:
>>  
>>
>>>conn = MySQLdb.connect(
>>>           host   = '127.0.0.1',
>>>           user   = 'pismikrop',
>>>           passwd = 'pass',
>>>           db     = 'db')
>>>    
>>>
>>
>>Unrelated to your question, but I see this a lot.  You should
>>not hardcode the database password in your script.  If your
>>script ever fails you may end up with a Python traceback, and
>>if PythonDebug is enabled (or you're using a framework on
>>top of mod_python) parts of your source code could be
>>dumped across the HTML output, including your password!
>>
>>In web scripts, you should always read any passwords, etc.,
>>from some other place such as a file.
>>
>>pw = open('.htdbpass','r').readline().strip()
>>conn = MySQLdb.connect(
>>            host   = '127.0.0.1',
>>            user   = 'pismikrop',
>>            passwd = pw,
>>            db     = 'db')
>>--
>>Deron Meranda
>>
>>  
>>
my distro is ubuntu breezy,
I used cgi handler. And text mime type
so i can view the print statement.

MySQL server 4.0.24
apache 2.0.54
python2.4-mysqldb 1.2.1

php, console python, cgi python works fine.

my .htaccess file

Allow from       All

AddHandler       mod_python .py
PythonHandler    mod_python.cgihandler
PythonDebug      On

DirectoryIndex   index.htm index.html index.php index.py index.pl

-----------------------------------------------------------------------------

#! /usr/bin/python
# -*- coding: UTF-8 -*-

print 'Content-Type: text/plain\n'

import MySQLdb
conn = MySQLdb.connect(
           host   = '127.0.0.1',
           user   = 'pismikrop',
           passwd = 'pass',
           db     = 'gate')
print conn
conn.close()


-------------------------------------------

output: 
<_mysql.connection open to '(null)' at 82a97e4>


if host = '10.0.0.6'

Mod_python error: "PythonHandler mod_python.cgihandler"

Traceback (most recent call last):

  File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 299, in HandlerDispatch
    result = object(req)

  File "/usr/lib/python2.4/site-packages/mod_python/cgihandler.py", line 96, in handler
    imp.load_module(module_name, fd, path, desc)

  File "/home/pismikrop/vhosts/mikropyuvasi/content/tests/mpcgi/firat.py", line 11, in ?
    db     = 'gate')

  File "/usr/lib/python2.4/site-packages/MySQLdb/__init__.py", line 66, in Connect
    return Connection(*args, **kwargs)

  File "/usr/lib/python2.4/site-packages/MySQLdb/connections.py", line 134, in __init__
    super(Connection, self).__init__(*args, **kwargs2)

OperationalError: (2003, "Can't connect to MySQL server on '10.0.0.6' (111)")

------------------------------------------

mysql> SELECT User, Host FROM user;
+------------------+--------------+
| User             | Host         |
+------------------+--------------+
| pismikrop        | %            |
| debian-sys-maint | localhost    |
| root             | localhost    |
| root             | mikropyuvasi |
+------------------+--------------+

pismikrop user has all priviliges to all databases.



Re: mysqldb error

Posted by Barry Pearce <ba...@copyrightwitness.net>.
One extra comment on this...

Firstly make sure you have upgraded to the latest version of MySQLdb - we found earlier versions less than great.

Warning: If you have PHP installed it uses mysql client libraries which are OUT OF DATE - and will cause failures. Remove the php module from the server and try again.


We use MySQL 4.1 servers quite happily from mod_python under both win32 and linux.



Deron Meranda wrote:
> On 4/12/06, Firat KUCUK <fi...@kucuk.org> wrote:
>   
>> conn = MySQLdb.connect(
>>            host   = '127.0.0.1',
>>            user   = 'pismikrop',
>>            passwd = 'pass',
>>            db     = 'db')
>>     
>
> Unrelated to your question, but I see this a lot.  You should
> not hardcode the database password in your script.  If your
> script ever fails you may end up with a Python traceback, and
> if PythonDebug is enabled (or you're using a framework on
> top of mod_python) parts of your source code could be
> dumped across the HTML output, including your password!
>
> In web scripts, you should always read any passwords, etc.,
> from some other place such as a file.
>
> pw = open('.htdbpass','r').readline().strip()
> conn = MySQLdb.connect(
>             host   = '127.0.0.1',
>             user   = 'pismikrop',
>             passwd = pw,
>             db     = 'db')
> --
> Deron Meranda
>
>   

Re: mysqldb error

Posted by Deron Meranda <de...@gmail.com>.
On 4/12/06, Firat KUCUK <fi...@kucuk.org> wrote:
> conn = MySQLdb.connect(
>            host   = '127.0.0.1',
>            user   = 'pismikrop',
>            passwd = 'pass',
>            db     = 'db')

Unrelated to your question, but I see this a lot.  You should
not hardcode the database password in your script.  If your
script ever fails you may end up with a Python traceback, and
if PythonDebug is enabled (or you're using a framework on
top of mod_python) parts of your source code could be
dumped across the HTML output, including your password!

In web scripts, you should always read any passwords, etc.,
from some other place such as a file.

pw = open('.htdbpass','r').readline().strip()
conn = MySQLdb.connect(
            host   = '127.0.0.1',
            user   = 'pismikrop',
            passwd = pw,
            db     = 'db')
--
Deron Meranda

Re: mysqldb error

Posted by Graham Dumpleton <gr...@dscpl.com.au>.
On 13/04/2006, at 5:26 AM, Firat KUCUK wrote:

> Hi,
> i wrote a simple connection script.
> It works as a command line script or cgi script.
> But does not work in mod_python.
>
> import MySQLdb
> conn = MySQLdb.connect(
>           host   = '127.0.0.1',
>           user   = 'pismikrop',
>           passwd = 'pass',
>           db     = 'db')
> print conn
> conn.close()
>
> command-line and cgi output:
> <_mysql.connection open to '127.0.0.1' at 81a304c>
>
> mod_python output:
> <_mysql.connection open to '(null)' at 82ac504>
>
> i cannot execute MySQL queries. What should i do?

Can you supply the remainder of your mod_python handler code
so we can see the context in which this used? Minimal but complete
as possible is preferable.

If the above is truly exactly how you are using it, you probably aren't
using mod_python but a CGI scripts as "print" statement will not
output anywhere in mod_python so you wouldn't be able to capture
it.

Graham