"Adgang nægtet for brugeren 'test'@'ip'(bruger adgangskode:JA)" er en MySQL-fejl.
Det betyder, at alt fungerer på netværksniveau , fordi at blive nægtet adgang som en given bruger , serveren skal have forstået, hvilken bruger du forsøgte at oprette forbindelse som . Så netværk, firewall, routing og så videre og så videre skal alle fungere; serveren skal lytte osv..
Problemet ligger "simpelthen" i godkendelsen .
Prøv at oprette forbindelse lokalt til databasen (for at tilsidesætte godkendelsen) og inspicer privilegietabellen:
USE mysql;
SELECT User, Host, Password from user WHERE User = 'test';
og husk, at den linje, du er interesseret i, er den, der nævner IP-adressen (da fejlmeddelelsen angiver IP-adressen , og ikke værtsnavnet - i så fald kunne det have været et DNS-problem; værtsnavnet er værtsnavnet, som serveren tror, du kommer fra , ikke det værtsnavn, du egentlig kommer fra).
Bruger/vært-matchningen går fra mere specifik til mindre specifik . Så hvis du allerede havde:
user host password
test 1.2.3.4 foo
og løb,
GRANT... TO [email protected]'%' ... PASSWORD bar
...dette tilskud ville fungere overalt undtagen 1.2.3.4, hvor adgangskoden forbliver 'foo'.
Fra manualen (link ovenfor):
Du kan blive tvunget til at gøre
USE mysql;
DELETE FROM user WHERE User = 'test';
GRANT ALL PRIVILEGES ON database.* TO 'test'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
for at sikre, at der ikke er nogen falske linjer i bevillingstabellen, der henviser til brugerens 'test'.
(Tilskuddet bør også være, synes jeg,
GRANT ALL PRIVILEGES ON databasename.*
)
Tvivl om sikkerhed (ikke relateret til svaret)
Manualen ovenfor siger:Specificiteten af en bogstavelig IP-adresse påvirkes ikke af, om den har en netmaske, så 192.168.1.13 og 192.168.1.0/255.255.255.0 betragtes som lige specifik .
Nu ved første øjekast 127.0.0.1/0.0.0.0
virker meget specifik (og harmløs) for localhost . Netmasken sikrer, hvis jeg ikke tager fejl, at den svarer til %
, bortset fra at den er utrolig specifik og vil køre først . Derfor
test bar %
test localfoo 127.0.0.1/0.0.0.0
betyder, at adgangskoden til test
hvor som helst er det slet ikke "bar", men det er "localfoo".
Ingen ville indsætte en sådan bevilling ved en fejl, men der er fejl og fejl .