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.






















