Обсуждение: Connecting to postgres on OSX from Swift using PostgresClientKit

Поиск
Список
Период
Сортировка

Connecting to postgres on OSX from Swift using PostgresClientKit

От
howardnews@selestial.com
Дата:
Hi,

Wondered if anyone had experience connection to pg14.1 running on OSX 
using the swift library PostgresClientKit.

I am having difficulties connecting and hopefully someone can put me on 
the right track.

The following is the swift code I am using

[Code]
     var config = ConnectionConfiguration()
     config.database = "mydb"
     config.user = "postgres"
     config.credential = .scramSHA256(password: "mypassword")
     config.port = "5432"
     config.ssl = true
     let connection = try PostgresClientKit.Connection(configuration: 
config)
     defer { connection.close() }
[/Code]

I have the following in my pg_hba.conf file:

[Code]
local     all     all                  scram-sha-256
[/Code]

I can successfully connect using psql and/pgadmin, but when I try and 
connect in code I get the following error:

[Code]
[Connection-1 Severe] Unable to connect socket: Error Code: 
-9989(0x2705), Operation not permitted
[/Code]

Any suggestions?

Thanks

Howard Cole
Selestial.com



Re: Connecting to postgres on OSX from Swift using PostgresClientKit

От
Rob Sargent
Дата:
On 7/31/22 16:40, howardnews@selestial.com wrote:
Hi,

Wondered if anyone had experience connection to pg14.1 running on OSX using the swift library PostgresClientKit.

I am having difficulties connecting and hopefully someone can put me on the right track.

The following is the swift code I am using

[Code]
    var config = ConnectionConfiguration()
    config.database = "mydb"
    config.user = "postgres"
    config.credential = .scramSHA256(password: "mypassword")
    config.port = "5432"
    config.ssl = true
    let connection = try PostgresClientKit.Connection(configuration: config)
    defer { connection.close() }
[/Code]

I have the following in my pg_hba.conf file:

[Code]
local     all     all                  scram-sha-256
[/Code]

I can successfully connect using psql and/pgadmin, but when I try and connect in code I get the following error:

[Code]
[Connection-1 Severe] Unable to connect socket: Error Code: -9989(0x2705), Operation not permitted
[/Code]

Any suggestions?

Thanks

Howard Cole
Selestial.com


Maybe add config.host = "localhost"?

Re: Connecting to postgres on OSX from Swift using PostgresClientKit

От
howardnews@selestial.com
Дата:
On 2022-07-31 23:42, Rob Sargent wrote:
> On 7/31/22 16:40, howardnews@selestial.com wrote:
> 
>> Hi,
>> 
>> Wondered if anyone had experience connection to pg14.1 running on
>> OSX using the swift library PostgresClientKit.
>> 
>> I am having difficulties connecting and hopefully someone can put me
>> on the right track.
>> 
>> The following is the swift code I am using
>> 
>> [Code]
>> var config = ConnectionConfiguration()
>> config.database = "mydb"
>> config.user = "postgres"
>> config.credential = .scramSHA256(password: "mypassword")
>> config.port = "5432"
>> config.ssl = true
>> let connection = try PostgresClientKit.Connection(configuration:
>> config)
>> defer { connection.close() }
>> [/Code]
>> 
>> I have the following in my pg_hba.conf file:
>> 
>> [Code]
>> local     all     all                  scram-sha-256
>> [/Code]
>> 
>> I can successfully connect using psql and/pgadmin, but when I try
>> and connect in code I get the following error:
>> 
>> [Code]
>> [Connection-1 Severe] Unable to connect socket: Error Code:
>> -9989(0x2705), Operation not permitted
>> [/Code]
>> 
>> Any suggestions?
>> 
>> Thanks
>> 
>> Howard Cole
>> Selestial.com
>  Maybe add config.host = "localhost"?
Thanks, tried localhost, 127.0.0.1 and ::128. No joy



Re: Connecting to postgres on OSX from Swift using PostgresClientKit

От
Tom Lane
Дата:
howardnews@selestial.com writes:
> On 2022-07-31 23:42, Rob Sargent wrote:
>> On 7/31/22 16:40, howardnews@selestial.com wrote:
>>> I can successfully connect using psql and/pgadmin, but when I try
>>> and connect in code I get the following error:
>>> [Connection-1 Severe] Unable to connect socket: Error Code:
>>> -9989(0x2705), Operation not permitted

>> Maybe add config.host = "localhost"?

> Thanks, tried localhost, 127.0.0.1 and ::128. No joy

Don't know much about Swift, but it wouldn't surprise me if that
code is running in some kind of sandbox that disallows IP
connections by default.

Also, does psql work when you say "psql -h localhost"?  It's
possible that your server isn't listening on localhost, or
there's a firewall there.  Your working connections could all be
via Unix sockets, from what little you've said so far.

            regards, tom lane



Re: Connecting to postgres on OSX from Swift using PostgresClientKit

От
Adrian Klaver
Дата:
On 7/31/22 16:53, howardnews@selestial.com wrote:
> On 2022-07-31 23:42, Rob Sargent wrote:
>> On 7/31/22 16:40, howardnews@selestial.com wrote:
>>
>>> Hi,
>>>
>>> Wondered if anyone had experience connection to pg14.1 running on
>>> OSX using the swift library PostgresClientKit.
>>>
>>> I am having difficulties connecting and hopefully someone can put me
>>> on the right track.

>>>
>>> Thanks
>>>
>>> Howard Cole
>>> Selestial.com
>>  Maybe add config.host = "localhost"?
> Thanks, tried localhost, 127.0.0.1 and ::128. No joy

What error do you get in the above cases?

> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



Re: Connecting to postgres on OSX from Swift using PostgresClientKit

От
howardnews@selestial.com
Дата:
On 2022-08-01 01:02, Tom Lane wrote:
> howardnews@selestial.com writes:
>> On 2022-07-31 23:42, Rob Sargent wrote:
>>> On 7/31/22 16:40, howardnews@selestial.com wrote:
>>>> I can successfully connect using psql and/pgadmin, but when I try
>>>> and connect in code I get the following error:
>>>> [Connection-1 Severe] Unable to connect socket: Error Code:
>>>> -9989(0x2705), Operation not permitted
> 
>>> Maybe add config.host = "localhost"?
> 
>> Thanks, tried localhost, 127.0.0.1 and ::128. No joy
> 
> Don't know much about Swift, but it wouldn't surprise me if that
> code is running in some kind of sandbox that disallows IP
> connections by default.
> 

Swift/Xcode is new to me too!

> Also, does psql work when you say "psql -h localhost"?  It's
> possible that your server isn't listening on localhost, or
> there's a firewall there.  Your working connections could all be
> via Unix sockets, from what little you've said so far.
> 
>             regards, tom lane

Using psql, i can successfully connect to localhost. In the 
postgresql.conf the listen address is *.
The application was installed from the EDB installer; not sure about 
firewalls on sandboxes in this situation.


Howard



Re: Connecting to postgres on OSX from Swift using PostgresClientKit

От
howardnews@selestial.com
Дата:
On 2022-08-01 01:04, Adrian Klaver wrote:
> On 7/31/22 16:53, howardnews@selestial.com wrote:
>> On 2022-07-31 23:42, Rob Sargent wrote:
>>> On 7/31/22 16:40, howardnews@selestial.com wrote:
>>> 
>>>> Hi,
>>>> 
>>>> Wondered if anyone had experience connection to pg14.1 running on
>>>> OSX using the swift library PostgresClientKit.
>>>> 
>>>> I am having difficulties connecting and hopefully someone can put me
>>>> on the right track.
> 
>>>> 
>>>> Thanks
>>>> 
>>>> Howard Cole
>>>> Selestial.com
>>>  Maybe add config.host = "localhost"?
>> Thanks, tried localhost, 127.0.0.1 and ::128. No joy
> 
> What error do you get in the above cases?
> 
>> 
>> 
Here is the error I get in the application.

2022-08-01T00:20:18.530Z Connection-1 finer] Created socket
[2022-08-01T00:20:18.532Z Connection-1 fine] Opening connection to port 
5432 on host localhost
2022-08-01 01:20:18.534308+0100 TestPostgres[10654:120173] 
dnssd_clientstub ConnectToServer: connect() failed 
path:/var/run/mDNSResponder Socket:13 Err:-1 Errno:1 Operation not 
permitted
2022-08-01 01:20:18.535617+0100 TestPostgres[10654:120173] 
[si_destination_compare] socket(PF_SYSTEM, SOCK_DGRAM, SYSPROTO_CONTROL) 
failed: Operation not permitted
2022-08-01 01:20:18.535694+0100 TestPostgres[10654:120173] 
[si_destination_compare] socket(PF_SYSTEM, SOCK_DGRAM, SYSPROTO_CONTROL) 
failed: Operation not permitted
[2022-08-01T00:20:18.537Z Connection-1 severe] Unable to connect socket: 
Error code: -9989(0x-2705), Operation not permitted
[2022-08-01T00:20:18.537Z Connection-1 finer] Closing socket



Re: Connecting to postgres on OSX from Swift using PostgresClientKit

От
howardnews@selestial.com
Дата:
On 2022-08-01 01:04, Adrian Klaver wrote:
> On 7/31/22 16:53, howardnews@selestial.com wrote:
>> On 2022-07-31 23:42, Rob Sargent wrote:
>>> On 7/31/22 16:40, howardnews@selestial.com wrote:
>>> 
>>>> Hi,
>>>> 
>>>> Wondered if anyone had experience connection to pg14.1 running on
>>>> OSX using the swift library PostgresClientKit.
>>>> 
>>>> I am having difficulties connecting and hopefully someone can put me
>>>> on the right track.
> 
>>>> 
>>>> Thanks
>>>> 
>>>> Howard Cole
>>>> Selestial.com
>>>  Maybe add config.host = "localhost"?
>> Thanks, tried localhost, 127.0.0.1 and ::128. No joy
> 
> What error do you get in the above cases?
> 
>> 
>> 

When using 127.0.0.1...

2022-08-01T00:29:19.319Z Connection-1 finer] Created socket
[2022-08-01T00:29:19.322Z Connection-1 fine] Opening connection to port 
5432 on host 127.0.0.1
[2022-08-01T00:29:19.324Z Connection-1 severe] Unable to connect socket: 
Error code: -9989(0x-2705), Operation not permitted
[2022-08-01T00:29:19.324Z Connection-1 finer] Closing socket



Re: Connecting to postgres on OSX from Swift using PostgresClientKit

От
Ron
Дата:
On 7/31/22 19:30, howardnews@selestial.com wrote:
> On 2022-08-01 01:04, Adrian Klaver wrote:
>> On 7/31/22 16:53, howardnews@selestial.com wrote:
>>> On 2022-07-31 23:42, Rob Sargent wrote:
>>>> On 7/31/22 16:40, howardnews@selestial.com wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Wondered if anyone had experience connection to pg14.1 running on
>>>>> OSX using the swift library PostgresClientKit.
>>>>>
>>>>> I am having difficulties connecting and hopefully someone can put me
>>>>> on the right track.
>>
>>>>>
>>>>> Thanks
>>>>>
>>>>> Howard Cole
>>>>> Selestial.com
>>>>  Maybe add config.host = "localhost"?
>>> Thanks, tried localhost, 127.0.0.1 and ::128. No joy
>>
>> What error do you get in the above cases?
>>
>>>
>>>
>
> When using 127.0.0.1...
>
> 2022-08-01T00:29:19.319Z Connection-1 finer] Created socket
> [2022-08-01T00:29:19.322Z Connection-1 fine] Opening connection to port 
> 5432 on host 127.0.0.1
> [2022-08-01T00:29:19.324Z Connection-1 severe] Unable to connect socket: 
> Error code: -9989(0x-2705), Operation not permitted
> [2022-08-01T00:29:19.324Z Connection-1 finer] Closing socket

This really looks like an error somewhere in the Mac OS networking stack.

What happens when you "telnet localhost 5432"?

-- 
Angular momentum makes the world go 'round.



Re: Connecting to postgres on OSX from Swift using PostgresClientKit

От
Adrian Klaver
Дата:
On 7/31/22 17:27, howardnews@selestial.com wrote:
> On 2022-08-01 01:04, Adrian Klaver wrote:
>> On 7/31/22 16:53, howardnews@selestial.com wrote:
>>> On 2022-07-31 23:42, Rob Sargent wrote:

> 2022-08-01T00:20:18.530Z Connection-1 finer] Created socket
> [2022-08-01T00:20:18.532Z Connection-1 fine] Opening connection to port 
> 5432 on host localhost
> 2022-08-01 01:20:18.534308+0100 TestPostgres[10654:120173] 
> dnssd_clientstub ConnectToServer: connect() failed 

A search on above error message found:

https://github.com/firebase/firebase-ios-sdk/issues/3033

https://developer.apple.com/forums/thread/67792

https://github.com/emqx/CocoaMQTT/issues/202

all of which point to what Tom Lane mentioned, sandboxing.

> path:/var/run/mDNSResponder Socket:13 Err:-1 Errno:1 Operation not 
> permitted
> 2022-08-01 01:20:18.535617+0100 TestPostgres[10654:120173] 
> [si_destination_compare] socket(PF_SYSTEM, SOCK_DGRAM, SYSPROTO_CONTROL) 
> failed: Operation not permitted
> 2022-08-01 01:20:18.535694+0100 TestPostgres[10654:120173] 
> [si_destination_compare] socket(PF_SYSTEM, SOCK_DGRAM, SYSPROTO_CONTROL) 
> failed: Operation not permitted
> [2022-08-01T00:20:18.537Z Connection-1 severe] Unable to connect socket: 
> Error code: -9989(0x-2705), Operation not permitted
> [2022-08-01T00:20:18.537Z Connection-1 finer] Closing socket


-- 
Adrian Klaver
adrian.klaver@aklaver.com



Re: Connecting to postgres on OSX from Swift using PostgresClientKit

От
howardnews@selestial.com
Дата:
On 2022-08-01 04:06, Adrian Klaver wrote:
>> 2022-08-01T00:20:18.530Z Connection-1 finer] Created socket
>> [2022-08-01T00:20:18.532Z Connection-1 fine] Opening connection to 
>> port 5432 on host localhost
>> 2022-08-01 01:20:18.534308+0100 TestPostgres[10654:120173] 
>> dnssd_clientstub ConnectToServer: connect() failed
> 
> A search on above error message found:
> 
> https://github.com/firebase/firebase-ios-sdk/issues/3033
> 
> https://developer.apple.com/forums/thread/67792
> 
> https://github.com/emqx/CocoaMQTT/issues/202
> 
> all of which point to what Tom Lane mentioned, sandboxing.
> 
>> path:/var/run/mDNSResponder Socket:13 Err:-1 Errno:1 Operation not 
>> permitted
>> 2022-08-01 01:20:18.535617+0100 TestPostgres[10654:120173] 
>> [si_destination_compare] socket(PF_SYSTEM, SOCK_DGRAM, 
>> SYSPROTO_CONTROL) failed: Operation not permitted
>> 2022-08-01 01:20:18.535694+0100 TestPostgres[10654:120173] 
>> [si_destination_compare] socket(PF_SYSTEM, SOCK_DGRAM, 
>> SYSPROTO_CONTROL) failed: Operation not permitted
>> [2022-08-01T00:20:18.537Z Connection-1 severe] Unable to connect 
>> socket: Error code: -9989(0x-2705), Operation not permitted
>> [2022-08-01T00:20:18.537Z Connection-1 finer] Closing socket

Hi Adrian,

you & Tom were correct - it was sandbox settings (which was turned 
off??) in Xcode which caused the problems. In case anyone else has the 
problem, the steps I took to fix the problem in XCode 13.3 were as 
follows:

1. Go to the project explorer and select the project.
2. Select the Target under the list of Targets
3. Select the "Signing & Capabilities" Tab/Heading
4. Under the "App Sandbox" settings, select the "Outgoing connections 
(client)" checkbox.
5. Note - the "Enable App Sandbox" under Build Settings seems to have no 
effect!

Apologies for not finding this myself - This was purely a MacOS / XCode 
problem - but many thanks to you all (Adrian, Tom, Rob) for proving yet 
again that Postgresql support is the best.

Howard.