I am trying to build my phoenix app on my server and facing a nightmarish issue because of the major platform differences with my dev machine.
Server:
mysqld Ver 5.7.33-0ubuntu0.18.04.1 for Linux on x86_64 ((Ubuntu))
Error:
23:01:12.690 [error] MyXQL.Connection (#PID<0.382.0>) failed to connect: ** (DBConnection.ConnectionError) connection refused
very helpful! I know.
tried with ecto://
or mysql://
no luck. I have hardcoded the values into the config files still refused!
I know for a fact that MySQL is up and running, the user credentials are correct and verified several times. Scratching my head found this gem in the source code.
defmodule Ecto.Adapters.MyXQL do
@moduledoc """
Adapter module for MySQL.
It uses `MyXQL` for communicating to the database.
## Options
MySQL options split in different categories described
below. All options can be given via the repository
configuration:
### Connection options
* `:protocol` - Set to `:socket` for using UNIX domain socket, or `:tcp` for TCP
(default: `:socket`)
* `:socket` - Connect to MySQL via UNIX sockets in the given path.
Would be useful if this was published in the hex docs but I can raise an issue for it later.
Although I am on unix for my dev machine and setup is completely different, it works with no problems.
so now I have hope! I pass in actual socket path with ecto://.....?socket=PATH
still refused or mysql://
still refused
I have set the protocol still no luck
protocol: :tcp
I can’t really use iex -S
because of the constant spamming of connection refused.
I see in the documentation about starting with the supervisor…
It's recommended to start MyXQL under supervision tree:
defmodule MyApp.Application do
use Application
def start(_type, _args) do
children = [
{MyXQL, username: "root", name: :myxql}
]
Supervisor.start_link(children, opts)
end
end
which made me go WTF! Because everything worked till now I didn’t realise this required a ‘boot’ config till now.
This is beyond F’ed level up of configuration at this point but let me try.
Oh connection refused for my user
, it did work and have an affect.
change to protocol to tcp… nope
it expects a goddamn socket and then I realized I have two different errors from different processes.
23:29:45.463 [error] MyXQL.Connection (#PID<0.404.0>) failed to connect: ** (MyXQL.Error) (1045) (ER_ACCESS_DENIED_ERROR) Access denied for user 'test'@'localhost' (using password: NO)
23:29:45.520 [error] MyXQL.Connection (#PID<0.379.0>) failed to connect: ** (DBConnection.ConnectionError) connection refused
I hardcode the password and still, shoddy shit won’t connect.
{MyXQL, username: "user", name: :myxql, socket: "/var/run/mysqld/mysqld.sock", password: "test", database: "test"}
I put all the values into the shoddy MyXQL supervisor tree and drop from config still refused.
Does anyone have any advice? Which bit am I missing here?
The only reason I am not using Postgres is the bigger footprint on the xxx-small server I have.