Re: Trying to solve a SocketError [Errno 13] Permission with PL/Python in PostgreSQL 9.3 - Mailing list pgsql-general
From | Marcos Ortiz |
---|---|
Subject | Re: Trying to solve a SocketError [Errno 13] Permission with PL/Python in PostgreSQL 9.3 |
Date | |
Msg-id | 55610A4C.3050406@uci.cu Whole thread Raw |
In response to | Re: Trying to solve a SocketError [Errno 13] Permission with PL/Python in PostgreSQL 9.3 (Adrian Klaver <adrian.klaver@aklaver.com>) |
Responses |
Re: Trying to solve a SocketError [Errno 13] Permission
with PL/Python in PostgreSQL 9.3
Re: Trying to solve a SocketError [Errno 13] Permission with PL/Python in PostgreSQL 9.3 |
List | pgsql-general |
On 23/05/15 19:09, Adrian Klaver wrote:
On 05/23/2015 03:51 PM, Marcos Ortiz wrote:Yes, Adrian. py2neo installs a tool called neoauth, which can be used to create users with their respective passwords.
On 23/05/15 18:40, Adrian Klaver wrote:On 05/23/2015 03:27 PM, Marcos Ortiz wrote:Yes, Adrian. Sorry for that, the correct port is 7474. I just wasRegards to all the list.
First all the info about the system:
O.S: CentOS 7 64 bits
PostgreSQL version:
SELECT version();
version
--------------------------------------------------------------------------------------------------------------
PostgreSQL 9.2.7 on x86_64-redhat-linux-gnu, compiled by gcc (GCC)
4.8.2 20140120 (Red Hat 4.8.2-16), 64-bit
(1 row)
Neo4j version: 2.1.M
Py2neo version: 2.0.8
Python version:
python
Python 2.7.5 (default, Jun 17 2014, 18:11:42)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2
Now the problem:
We are working here to integrate PostgreSQL with Neo4j through PL/Python
using the py2neo module for it, and when we want to send sentences to
Neo4j using port 7474, the executed code raises a SocketError [Errno 13]
Permission denied.
Well first in the code below, if I am following correctly, the socket
is 37474.
testing with higher ports to
see if the error persisted.Did you mean the socket created by Neo4j's server right?
I tested the same code in a normal python script outside of PostgreSQL,
and it works well, but the problem is when I use the code inside
PostgreSQL with PL/Python.
Second the plpythonu code is running as the postgres user, so does
that user have permissions on the socket.
For that reason, I created a group in the system for this named
supervisor, where neo4j/postgres users are members.
So, if I find the socket file for Neo4j-server, changing permissions
could solve the problem. Right?
Not sure, but a quick search found that py2neo uses the neo4j REST API and that API has authorization parameters:
http://neo4j.com/docs/stable/security-server.html
Have you gone through the above?
For that reason, I use this way to create the graph:
graph = Graph("http://neo4j:neo4j@10.8.45.136:7474/db/data")
using the user neo4j and its pass neo4j
Neo4j is a Java-based platform.This is the code of a simple function to search a node in the Neo4j
graph:
CREATE OR REPLACE FUNCTION search_professor_node(nombre_prof text)
RETURNS text AS
$BODY$
from py2neo import Graph
from py2neo.cypher import CypherTransaction
graph = Graph("http://neo4j:neo4j@10.8.45.136:37474/db/data")
tx = graph.cypher.begin()
statement = "MATCH (pf:Professor) WHERE pf.nombre = {name} RETURN pf;" ,
tx.append(statement, parameters={'name': nombre_prof})
professor= tx.commit()
$BODY$
LANGUAGE plpythonu VOLATILE
COST 100;
and it can be used:
SELECT search_professor_node('Max');
The completed error is:
********** Error **********
ERROR: py2neo.packages.httpstream.http.SocketError: Permission denied
SQL state: XX000
Context: Traceback (most recent call last):
PL/Python function "search_professor_node", line 6, in <module>
tx = graph.cypher.begin()
PL/Python function "search_professor_node", line 666, in cypher
PL/Python function "search_professor_node", line 212, in metadata
PL/Python function "search_professor_node", line 257, in get
PL/Python function "search_professor_node", line 965, in get
PL/Python function "search_professor_node", line 942, in
__get_or_head
PL/Python function "search_professor_node", line 432, in submit
PL/Python function "search_professor_node", line 361, in submit
PL/Python function "search_professor_node"
Thanks a lot for your time, and I hope to find a suitable solution
for it.
--
Marcos Ortiz <http://about.me/marcosortiz>, Sr. Product Manager (Data
Infrastructure) at UCI
@marcosluis2186 <http://twitter.com/marcosluis2186>
pgsql-general by date: