Mysql
 sql >> база данни >  >> RDS >> Mysql

Достъпът е отказан за потребител 'test'@'ip' (използвайки парола:ДА)

„Достъпът е отказан за потребител 'test'@'ip'(използвайки парола:ДА)" е грешка в MySQL.

Това означава, че на ниво мрежавсичко работи , защото да бъде отказан достъпкато даден потребител , сървърът трябва да е разбрал кой потребител се опитвате да се свържете като . Така че мрежата, защитната стена, маршрутизирането и така нататък и така нататък, всички трябва да работят; сървърът трябва да слуша и т.н..

Проблемът е "просто" в удостоверяването .

Опитайте да се свържете локално към базата данни (за да отмените удостоверяването) и проверете таблицата с привилегии:

USE mysql;
SELECT User, Host, Password from user WHERE User = 'test';

и не забравяйте, че редът, който ви интересува, е този, който споменава IP (тъй като съобщението за грешка определя IP , и не името на хоста - в този случай може да е проблем с DNS; името на хоста е името на хоста, от което сървърът смята, че идвате , а не името на хоста, от което наистина идвате).

Съвпадението потребител/хост идва от по-конкретно до по-малко конкретни . Така че, ако вече сте имали:

user      host     password
test      1.2.3.4  foo

и побягна,

GRANT... TO [email protected]'%' ... PASSWORD bar

...тази субсидия ще работи отвсякъде освен 1.2.3.4, където паролата ще остане 'foo'.

От ръководството (линк по-горе):

Може да сте принудени да го направите

USE mysql;
DELETE FROM user WHERE User = 'test';
GRANT ALL PRIVILEGES ON database.* TO 'test'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

за да се гарантира, че в таблицата за предоставяне няма фалшиви редове, отнасящи се до потребителския „тест“.

(Също така, GRANT трябва да бъде, според мен,

GRANT ALL PRIVILEGES ON databasename.*

)

Съмнение в сигурността (несвързано с отговора)

Ръководството по-горе казва:Специфичността на буквалния IP адрес не се влияе от това дали има мрежова маска, така че 192.168.1.13 и 192.168.1.0/255.255.255.0 се считат за еднакво специфични .

Сега от пръв поглед 127.0.0.1/0.0.0.0 изглежда много специфично (и безобидно) за localhost . Мрежовата маска, ако не се лъжа, гарантира, че е еквивалентна на % , освен че е невероятно специфичен и ще се изпълнява първи . Следователно

test     bar         %           
test     localfoo    127.0.0.1/0.0.0.0

означава, че паролата за test отвсякъде изобщо не е "бар", а е "localfoo".

Никой не би добавил такова разрешение по погрешка, но има грешка и грешка .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какъв е правилният и безопасен/сигурен начин да запазите потребителя влязъл? бисквитки? сесия? PHP &&MYSQL

  2. Грешка с неправилен низ при добавяне на емоджи към база данни чрез формуляр

  3. Как да получите възраст от D.O.B поле в MySQL?

  4. Mysql масивът не работи

  5. Mysql, където идентификаторът е в масив