Как делает человечность, mysql определяют имя хоста?

Это - определенный Q: у Меня есть апачская работа человечности в параллелях и mysql, работающем на этом VM и на хосте OS X. Так как я пытаюсь эмулировать свои продуктивные среды локально, я соединяюсь с удаленным mysql сервером на OS X. Я делаю это успешно для некоторых клиентов, и теперь у меня есть новый.

У меня есть umhef.ca, osx и dom.biz в моем файле hosts человечности. Когда я проверяю с помощью ping-запросов OS X от человечности, он сообщает об успехе и правильном IP. Мой drupal файл настроек установлен хост 'osx' и пользователя 'rootd'. Пользователь настраивается на ОС x mysql сервер с правами на этот дб. Как я знаю это? Я вижу других пользователей, которые успешно настраивают в mysql, и они, кажется, совпадают с этим пользователем.

Это - фон, чтобы помочь мне диагностировать, почему я получаю эту ошибку: PDOException: доступ запрещен SQLSTATE [HY000] [1045] для пользователя 'rootd' 'umhef.ca' (использование пароля: ДА)

WTF является этим хостом, прибывающим из? Это - законный хост как он, и другие указывают на OS x VM. Таким образом для поиска и устранения неисправностей этого я делаю попытку этого от человечности:

mysql --host=osx --user=rootd --password=mypassword
Access denied for user 'rootd'@'umhef.ca' (using password: YES)

Я попытался комментировать свой файл hosts человечности, но почему человечность игнорирует мой параметр хоста? Что еще я должен использовать для поиска и устранения неисправностей этого? спасибо, sam

1
задан 8 May 2015 в 19:32
1 ответ

Если вы можете войти в MySQL как root @ localhost, запустите следующее

SELECT USER(),CURRENT_USER();

О чем это вам говорит:

  • USER () сообщает, как вы пытались аутентифицироваться в MySQL
  • CURRENT_USER () сообщает, как вам была разрешена аутентификация в MySQL

Когда вы получили ошибку

Доступ запрещен для пользователя (скрытый) (с использованием пароля: YES)

Хост-часть была определена таблица mysql.user . MySQL имеет необычный, но методичный способ аутентификации пользователей. В свободное время вы можете прочитать мою публикацию DBA StackExchange Ошибка MySQL: доступ запрещен для пользователя 'a' @ 'localhost' (с использованием пароля: YES) о том, как это работает.

В любом случае, чтобы попробовать чтобы перейти к делу, сделайте следующее

SELECT user,host FROM mysql.user;

. Это даст вам все возможные CURRENT_USER () значения (способы, которыми вы можете подключиться к MySQL). Я предполагаю, что вы пытались войти в систему как rootd @ osx и, вероятно, у вас нет записи в mysql.user . Другими словами, если вы запустите

SELECT CONCAT(user,'@',host) userhost FROM mysql.user
WHERE user='rootd' AND host='osx';

, вы ничего не получите. Если вы запустите

SELECT CONCAT(user,'@',host) userhost FROM mysql.user WHERE user='rootd';

, вы можете увидеть (скрыто). Если вы этого не сделаете, тогда mysqld предполагает, что вы идете этим путем, и в mysql.user нет соответствующей аутентификации.

Если вы сделали что-то изменения хоста в ОС, обязательно перезапустите mysqld, чтобы он узнал об этих изменениях.

1
ответ дан 4 December 2019 в 00:08

Теги

Похожие вопросы