Connection refused to mysql database from C++ driver - c++

Problem
I'm following tutorial on Connect/C++ provided by dev.mysql. After copying the example and successfully compiling and linking it, I run into following issue:
terminate called after throwing an instance of 'sql::SQLException'
what(): Can't connect to MySQL server on '127.0.0.1' (111)
From what I know 111 stands for Permission Denied.
Setup
Here is the example code taken from here and slightly modified:
#include <mysql_driver.h>
int main()
{
auto driver = sql::mysql::get_mysql_driver_instance();
auto con = driver->connect("tcp://127.0.0.1:0", "root", "123");
delete con;
}
Trying with tcp://127.0.0.1:3306 give the same result.
Here is the CMakeLists.txt:
cmake_minimum_required(VERSION 3.9)
project(mysql_try)
set(CMAKE_CXX_STANDARD 14)
set(SOURCE_FILES main.cpp)
add_executable(mysql_try ${SOURCE_FILES})
target_include_directories(mysql_try PUBLIC /usr/local/include/mysql++)
target_link_libraries(mysql_try mysqlclient /usr/local/lib/libmysqlcppconn-static.a pthread dl)
I can easily run mysql with the credentials in the code. I disabled networking, so that it would only listen on localhost. Running
mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
gave me 0, so I guess it is port 0.
C Connector and command line interfaces work just fine.
My OS is ubuntu 16.04.

I disabled networking, so that it would only listen on localhost.
There's a difference between disabling networking all together (tcp) and specifying tcp to listen ONLY on your loopback adapter (127.0.0.1). Your mysql client is almost certainly connecting via Unix Socket, not TCP, which is why that works fine. Verify that by running mysql --protocol tcp. If that fails, then you know you disabled TCP connections all together, and it's connecting via Unix Socket.
connect("tcp://127.0.0.1:0"
If you did disable networking with skip-networking you need to change your connect() to reference your socket file instead. See the docs
unix://path_name
This URL format enables use of Unix domain socket files for connections to the local host on Unix and Unix-like systems. The path_name value is the socket file path name, just as for the --socket option of MySQL clients such as mysql and mysqladmin running on Unix (see Connecting to the MySQL Server).
Find your socket with:
mysql> SHOW GLOBAL VARIABLES LIKE 'socket'
If you want to keep your connect string the same, remove skip-networking and instead add
bind-address = 127.0.0.1
That should fix it!

Related

gRPC C++, client: "14: Connect Failed"

We are running "helloworld" example from https://grpc.io/docs/quickstart/cpp.html#update-a-grpc-service and we received the following ERROR:
14: Connect Failed
Greeter received: RPC failed.
The server and the client are listening on: 0.0.0.0:50051. The Server is running.
First we receive just a packet on the server and the client crashes, I checked it with tcpdump. We checked on different hosts as well as on the same host but it didn't work for either cases.
Should we change a different IP or different Port number?
I got the same issue on my PC(OS: ubuntu 16.04 LTS, protobuf 3.4.0)
so I search for the reason and I found this:
Reason
If on a linux machine, the environment has the usual "http_proxy" environment variable configured, gRPC will take that into account when trying to connect, however, will then proceed to ignore the companion no_proxy setting:
For example:
$ env
http_proxy=http://106.1.216.121:8080
no_proxy=localhost,127.0.0.1
$ ./greeter_client
D0306 16:00:11.419586349 1897 combiner.c:351] C:0x25a9290 finish old_state=3
D0306 16:00:11.420527744 1896 tcp_client_posix.c:179] CLIENT_CONNECT: ipv4:106.1.216.121:8080: on_writable: error="No Error"
D0306 16:00:11.420567382 1896 combiner.c:145] C:0x25a69a0 create
D0306 16:00:11.420581887 1896 tcp_client_posix.c:119] CLIENT_CONNECT: ipv4:106.1.216.121:8080: on_alarm: error="Cancelled"
I0306 16:00:11.420617663 1896 http_connect_handshaker.c:319] Connecting to server 127.0.0.1:50051 via HTTP proxy ipv4:106.1.216.121:8080
Basically, it's using the http_proxy url to connect even though localhost is in the no_proxy list. Since the default for no_proxy includes localhost on most linux machines; the end result is that any user with an http_proxy configured will never be able to connect to localhost. --- [1]
Other solution
You can enable grpc tracing with
export GRPC_TRACE=all && ./greeter_server and same thing for the client.
Verification
Terminal 1
Terminal 2
That should do the trick
ps. for more information about GRPC_TRACE - gRPC environment variables
Reference
gRPC doesn't respect the no_proxy environment variable

Couldn't make connection to MySQL after SQL_MODE is set

I am using wampserver 2.5, I have to change some configuration of my.ini
I added these lines in my.ini file.
[mysqld]
SQL_MODE = "NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
After adding these lines and restarting my wamp, I could not make connection with MySQL and the color of wamp icon is also orange.
Error:
MySQL said: Documentation
#2002 - No connection could be made because the target machine actively refused it.
The server is not responding (or the local server's socket is not correctly configured).

Can get to one guest webserver on VirtualBox, but not to another

I have a VirtualBox setup with Arch Linux. I use it to run various tutorials on Node.js and Redux. The host OS is Windows 8.1. I've mapped guest port 8080 to host 8080. When I run a simple Node.js server on the VM I can access it from the host machine on this port, just as expected.
Now I need to try another test server (webpack-dev-server). I start it in VM and check that it works via curl, but when I try to access it from the host, it says the connection was reset by peer. curl -v shows a pretty standard log: it sends a header and then says Recv failure. So:
one web server on VM works OK and is accessible via the mapped port;
another web server on VM works OK on VM, but is not accessible via the mapped port.
What could be the cause?
I think it's something with VirtualBox, but just in case I label this with webpack-dev-server as well.

Connecting to MonetDB server on guest virtual machine from host

I have a virtual machine (centos 7) in VirtualBox on a RHEL 5 host running MonetDB5 (server v 11.19.9). I can connect to the database from with the guest through both jdbc and mclient. However, I cannot connect to it from the host.
I have port 50000 forwarded to port 5555, and have set shared=yes in monetdb and control=yes on monetdbd. When I try to connect using
java -jar jdbcclient.jar -dmydatabase -umonetdb -hlocalhost -p5555 -Xdebug
I type in my password and it waits a long time, then says:
Database connect failed: Unable to connect (localhost:5555): Connection to server lost!
The javaclient log file is unhelpful:
RD 1438806937222: server closed the connection (EOF)
The merovingian.log file is also unhelpful since nothing is added to it. Note that the mserver command in the log says --set-mapi_open=false, even though I have set sharing and control = yes. But I can't find the MonetDB.conf file so I don't know where to change "mapi_open=true." I tried making my own MonetDB.conf file and putting it in /etc/ but it doesn't seem to work there.
Note that I can connect to the machine with
ssh me#localhost -p222 -X
where I have forwarded port 20 to 222, so I feel good about the port forwarding. Any guidance would be greatly appreciated. Thanks!
The problem was with the firewall. Even though port 22 (ssh) was automatically opened on the guest machine, port 50000 needed to be configured manually.

Installing and Viewing Neo4j on Existing AWS EC2 Instance

I'm trying to install the enterprise edition of neo4j on an existing EC2 (Amazon linux) instance. So far I've
wget "link to enterprise"
untar the file
renamed and moved the folder to NEO4J_HOME
then went into the config files for neo4j.properties to make the following changes:
# Enable shell server so that remote clients can connect via Neo4j shell.
remote_shell_enabled=true
# The network interface IP the shell will listen on (use 0.0.0 for all interfaces)
remote_shell_host=127.0.0.1
# The port the shell will listen on, default is 1337
remote_shell_port=1337
EDITED Christophe Willemsen pointed out that for my original error, I had forgotten to restart the server at that point but I was still unable to access the web server while it was running. So to make it more clear, I've edited the remaining post:
I went to neo4j-server.properties and uncommented:
org.neo4j.server.webserver.address=0.0.0.0
And start the server
NEO4J_HOME/bin/neo4j start
WARNING: Max 1024 open files allowed, minimum of 40 000 recommended. See the Neo4j manual.
Using additional JVM arguments: -server -XX:+DisableExplicitGC -Dorg.neo4j.server.properties=conf/neo4j-server.properties -Djava.util.logging.config.file=conf/logging.properties -Dlog4j.configuration=file:conf/log4j.properties -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:-OmitStackTraceInFastThrow
Starting Neo4j Server...WARNING: not changing user
process [28557]... waiting for server to be ready..... OK.
http://localhost:7474/ is ready.
checking the status:
NEO4J_HOME/bin/neo4j status
Neo4j Server is running at pid 28557
I can run the shell but the when I go to localhost 7474 I still can not connect
Any help would be appreciative. The only tutorial or help I've found assumed I was starting from scratch with a new instance. If someone could provide some instructions for installing or fix my configuration that would be great.
Thanks!
You have to edit neo4j-server.properties and uncomment the line with:
org.neo4j.server.webserver.address=0.0.0.0
So that the db listens on an external interface not just localhost, and you have to open the port (7474) in your firewall rules.
Make sure to secure access to the db though:
http://neo4j.com/docs/stable/security-server.html