mysqldb error
Web Server forum
Back To The Forum Home!Search!Private Messaging System

Web Server Talk Web Server Talk > Web Servers reviews > Apache Server configuration support > Apache Mod-Python > mysqldb error




  Last Thread   Next Thread Next
  Show Printable Version Email this Page Subscribe to this Thread      Post New Thread    Post A Reply      

    mysqldb error  
Firat KUCUK


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
04-18-06 05:06 AM

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?







[ Post a follow-up to this message ]



    Re: mysqldb error  
Graham Dumpleton


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
04-18-06 05:06 AM


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






[ Post a follow-up to this message ]



    Re: mysqldb error  
Deron Meranda


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
04-18-06 05:06 AM

On 4/12/06, Firat KUCUK <firat@kucuk.org> wrote:
> conn =3D MySQLdb.connect(
>            host   =3D '127.0.0.1',
>            user   =3D 'pismikrop',
>            passwd =3D 'pass',
>            db     =3D '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 =3D open('.htdbpass','r').readline().strip()
conn =3D MySQLdb.connect(
host   =3D '127.0.0.1',
user   =3D 'pismikrop',
passwd =3D pw,
db     =3D 'db')
--
Deron Meranda






[ Post a follow-up to this message ]



    Re: mysqldb error  
Barry Pearce


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
04-18-06 05:06 AM

One extra comment on this...

Firstly make sure you have upgraded to the latest version of MySQLdb - we fo
und 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 <firat@kucuk.org> wrote:
> 
>
> 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
>
>






[ Post a follow-up to this message ]



    Re: mysqldb error  
Firat KUCUK


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
04-18-06 05:06 AM

Barry Pearce yazmış:
[vbcol=seagreen]
>One extra comment on this...
>
>Firstly make sure you have upgraded to the latest version of MySQLdb - we f
ound 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 serve
r and try again.
>
>
>We use mysql 4.1 servers quite happily from mod_python under both win32 and
 linux.
>
>
>
>
> Deron Meranda wrote:
> 
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 H
andlerDispatch
result = object(req)

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

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

File "/usr/lib/python2.4/site-packages/MySQLdb/__init__.py", line 66, in Con
nect
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.








[ Post a follow-up to this message ]



    Re: mysqldb error  
Graham Dumpleton


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
04-18-06 05:06 AM

Apache doesn't probably run as any of the users which your database
allows access to. Add lines in your CGI which says:

import os
print os.getuid()

and then see what user that UID actually is and give it access. User
may be something like "apache", "www", "wwwroot" or possibly even
"nobody" depending on the system configuration.

You can also check your Apache configuration for lines:

User www
Group www

to see what it runs as:

Graham

Firat KUCUK wrote ..
> 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.






[ Post a follow-up to this message ]



    Re: mysqldb error  
Graham Dumpleton


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
04-18-06 05:06 AM

Whoops. I could be talking nonsense here. But  then I missed that
your code says 127.0.0.1 yet the error says 10.0.0.6.

FWIW, the reason that I thought to suggest to look at this was that
I was using a database once where using 127.0.0.1 made it use
a local database connection rather than full IP connection and in
that situation, for whatever reason it actually ignored the user name
in the login and was using the user ID of the process connecting
to the database to determine privileges.

I rarely use databases, so could though be completely wrong and
misunderstood what I saw at the time. :-(

Someone who knows what they are talking about should step in
and save me now. :-)

Graham

Graham Dumpleton wrote ..[vbcol=seagreen]
> Apache doesn't probably run as any of the users which your database
> allows access to. Add lines in your CGI which says:
>
>   import os
>   print os.getuid()
>
> and then see what user that UID actually is and give it access. User
> may be something like "apache", "www", "wwwroot" or possibly even
> "nobody" depending on the system configuration.
>
> You can also check your Apache configuration for lines:
>
> User www
> Group www
>
> to see what it runs as:
>
> Graham
>
> Firat KUCUK wrote .. 
> 299, 
> (111)") 






[ Post a follow-up to this message ]



    Re: mysqldb error  
Deron Meranda


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
04-18-06 05:06 AM

> OperationalError: (2003, "Can't connect to mysql server on '10.0.0.6' (11=
1)")

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






[ Post a follow-up to this message ]



    Re: mysqldb error  
Firat KUCUK


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
04-18-06 05:06 AM

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.p...e=faq02.013.htp

but i didn't understand.







[ Post a follow-up to this message ]



    Re: mysqldb error  
Graham Dumpleton


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
04-18-06 05:06 AM


On 13/04/2006, at 8:33 PM, Firat KUCUK wrote:

> i think it is related with:
> http://www.modpython.org/FAQ/faqw.p...e=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






[ Post a follow-up to this message ]



    Sponsored Links  




 





   All times are GMT. The time now is 02:49 AM.      Post New Thread    Post A Reply      
  Last Thread   Next Thread Next


Most Popular forums 

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is OFF
 
Medical and Health forum | Computer Games Reviews | Graphics design forum

Back To The Top
Home | Usercp | Faq | Register