[NodeJS/mySQL] connect localhost database (op Synology NAS)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Ronnyrr
  • Registratie: Juni 2009
  • Laatst online: 16-02-2024
He Tweakers,

Momenteel ben ik bezig met een NodeJS applicatie welke op mijn localhost:3000 draait.
Daarin probeer ik een connectie naar mijn database welke draait op mijn NAS van Synology:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    var mysql = require('mysql');
    var connection = mysql.createConnection({
        host     : '192.168.1.17',
        port     : 3306,
        user     : 'root',
        password : 'MijnHuidigeWW'
    });
    
    connection.connect( function(err) {
        if (err)
            console.log(err);
        else
            console.log('connected');
    });


Helaas blijft mijn console de volgende error geven:

code:
1
ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'192.168.1.15'


Het aparte hier vind ik dat mijn Synology op 192.168.1.17 staat, dit ik ook wat ik bovenaan bij het aanmaken van de connectie meegeef. Echter probeert nodeJS hier verbinding te maken met .15?! Weet iemand waarom dit is?

Ik heb natuurlijk ook zelf wat research gedaan. Zo kwam ik uit op dit Stack Overflow artikelen waar de root user bepaalde privileges gegeven wordt. Ik ga er vanuit dit zo te moeten invullen:

MySQL:
1
2
3
CREATE USER 'root'@'%%' IDENTIFIED BY 'MijnHuidigeWW';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'%%';
FLUSH PRIVILEGES;


Echter krijg ik hierbij telkens de volgende error:
MySQL:
1
#1396: Operation CREATE USER failed for 'root'@'%' 


Kortom ik kom er tot nu nog niet helemaal uit.
Iemand die mij hier verder mee kan helpen?

EDIT: Weet niet of het nog uitmaakt, maar ik heb poort 3306 voor de zekerheid ook maar open gezet in mijn router.

[ Voor 3% gewijzigd door Ronnyrr op 08-12-2015 12:29 ]


Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 23:40

RM-rf

1 2 3 4 5 7 6 8 9

ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'192.168.1.15'

betekent dat MySQL aangegeven heeft een verbindingsverzoek van de user root geweigerd te hebben die contact maakt van IP 192.168.1.15..

ik neem aan dat die .15 dus ook de Applicatie is die verbinding poogt te maken, niet de MySQL server.

MySQL heeft een rechtenmanagement dat ook gebaseerd is op waar de user vandaan contact kan maken... dus wel toestaan dat bv root toegang krijgt vanaf Localhost, maar hem niet toestaan van externe verbindingen (wat dus een extre beveiliging is die zeker in geval van een root-users zinnig kan zijn).

Volgens mij moet je die GRANT query en de FLush uitvoeren, zonder die CREATE, de user zal al bestaan

[ Voor 7% gewijzigd door RM-rf op 08-12-2015 12:45 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

Ronnyrr schreef op dinsdag 08 december 2015 @ 12:22:
Echter probeert nodeJS hier verbinding te maken met .15?! Weet iemand waarom dit is?
Er wordt verbonden vanaf 192.168.1.15.
MySQL:
1
2
3
CREATE USER 'root'@'%%' IDENTIFIED BY 'MijnHuidigeWW';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'%%';
FLUSH PRIVILEGES;
Een wildcard is een enkele %, zie http://dev.mysql.com/doc/refman/5.7/en/adding-users.html
De spaties in * . * lijken me ook overbodig.
Echter krijg ik hierbij telkens de volgende error:
MySQL:
1
#1396: Operation CREATE USER failed for 'root'@'%' 
Probeer de user eens te verwijderen alvorens een nieuwe toe te voegen. Maar dan wel een andere user dan root.

[ Voor 3% gewijzigd door 8088 op 08-12-2015 12:49 ]

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?


Acties:
  • 0 Henk 'm!

  • Ronnyrr
  • Registratie: Juni 2009
  • Laatst online: 16-02-2024
Bedankt voor je reply's.
Eerst heb ik @RM-rf zijn suggestie geprobeerd uit te voeren. Helaas kreeg ik hierna het zelfde resultaat.

Daarna heb ik, zoals @8088 zei, geprobeerd een nieuwe user aan te maken ipv. de bestaande aan te passen. En dit werkte! Ik ben nu succesvol verbonden met de mySQL server op mijn NAS.

Nog een korte vraag;
Ik had de 'CREATE USER root' query meerdere malen uitgevoerd. Hierdoor waren in de tabel user van de mySQL database meerdere users met de username root. Momenteel ziet die er zo uit:
Afbeeldingslocatie: http://www.justrightwebdesign.nl/nas/mysqlusers.jpg

Ik ga er vanuit dat ik de tweede row van root user zonder problemen kan verwijderen?

Iemand trouwens nog een verklaring waarom de user root niet werkt en een andere wél? Automatische beveiliging zoals eerder gezegd werd?!

Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 23:40

RM-rf

1 2 3 4 5 7 6 8 9

Ronnyrr schreef op dinsdag 08 december 2015 @ 13:19:

Ik ga er vanuit dat ik de tweede row van root user zonder problemen kan verwijderen?
ik zou dat sterk afraden... als je die GRANT uitgevoerd hebt, zal de root@% enkel recht hebben op die ene tabel, maar bv niet op andere tabellen en zeker om users te creeren heb je die nodig (dan heb je schrijfrechten op de Mysql-db en User-table nodig)
Iemand trouwens nog een verklaring waarom de user root niet werkt en een andere wél? Automatische beveiliging zoals eerder gezegd werd?!
zoals gezegd, het 'Host'-veld in Users definieert waarvandaan iemand connectie maakt...
als je van de localhost connect, zal je de eerste root user gebruiken en die heeft veel meer rechten toegewezen, standaard alle rechten op alle databases/tables..

connect je van dat IP .15, is geen verbinding met de eerste rootuser mogelijk, aangezien die enkel op localhost/127.0.0.1/::1 functioneert.. en valt hij terug op de tweede rootuser met wildcard in het Host-veld...
deze tweede rootuser heeft duidelijk minder rechten, enkel die op die ene tabel

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen