5

I am trying to configure a nodejs container to connect to a mysql database.

My code looks like this:

var pool  = mysql.createPool({
    host     : 'mysql',
    port     : '3306',
    user     : 'root',
    password : '...',
    database : 'general',
    connectionLimit : 50,
    queueLimit : 5000
});

I am using the standard mysql container.

I am using fig for starting the containers. fig.yml looks something like:

node:
  build: node
  ports:
    - "9000:9000"
    - "9001:9001"
  links:
    - mysql:mysql
  command: node server/Main.js

mysql:
  image: mysql
  volumes:
    - /data/test:/var/lib/mysql
  environment:
    MYSQL_ROOT_PASSWORD: ...

Every time i try to connect i get the following error:

failed to connect to database: Error: ER_HOST_NOT_PRIVILEGED: Host '172.17.0.142' is not allowed to connect to this MySQL server

Any idea what I am doing wrong? I have played around with wordpress and it seems to connect to the same mysql db without any problems.

Thx!

Edit So, I have found the answer in the end. The problem was indeed a privilege issue. I ran the following command:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'

And I was able to access the database.

Petru
  • 904
  • 1
  • 12
  • 18
  • 1
    Could [this be of help](http://stackoverflow.com/questions/19943615/connect-to-remote-mysql-database)? Or possibly [this](http://stackoverflow.com/questions/1559955/host-xxx-xx-xxx-xxx-is-not-allowed-to-connect-to-this-mysql-server)? – wassgren Jan 09 '15 at 20:51
  • What is your mysql version?`General` is a reserved word in mysql 5.6,use back ticks in your pool – Mihai Jan 09 '15 at 20:53
  • @wassgren I do not think it is a grant privilege issue, since wordpress connects to the same database without additional privileges – Petru Jan 09 '15 at 21:13
  • @Mihai mysql version is indeed 5.6, but the same pool used for localhost works like a charm – Petru Jan 09 '15 at 21:14
  • 1
    @Petru Ok, just to be clear. *The same database*, is that just the same server or actually *the same logical database*? Typically wordpress connects to a *wordpress*-database using the *wordpress*-user and that user has specified privileges for that particular database. – wassgren Jan 10 '15 at 10:35
  • @wassgren the same logical database. First startup of the mysql docker container creates a default empty database. I was able to initialize a wordpress website on the empty database (so I am guessing they use root user for running the initialization scripts), while my node pool throws host_not_privilegeed exception when trying to connect. – Petru Jan 10 '15 at 17:20

1 Answers1

0

I use the drakedroid/mysql-with-data (https://registry.hub.docker.com/u/drakedroid/mysql-with-data/) image. It extends the default image, but adds more functionality.

Pieter
  • 2,143
  • 3
  • 14
  • 13