Назад | Перейти на главную страницу

«Доступ запрещен для пользователя 'root' @ 'servername' (с использованием пароля: NO)» - за исключением того, что я использую пароль

Это странно. Наш веб-сервер работает под управлением RHEL 5.5 и установлен клиент MySQL версии 5.5.10 (только что обновленный из сборки 5.0, в которой была такая же проблема). Когда я подключаюсь к серверу базы данных (который НЕ является локальным хостом) через «mysql --host = dbserver -uroot -p» и предоставляю пароль, происходит сбой «Доступ запрещен для пользователя 'root' @ 'servername' (с использованием пароля: НЕТ) ». Конечно я я предоставление пароля. Если я попытаюсь войти в систему с другой учетной записью и просто введу какой-либо старый ненужный пароль, это не удастся с сообщением «Доступ запрещен для пользователя 'otheruser' @ 'dbserver' (используя пароль: ДА)». Так что же заставляет его отказываться предоставить пароль, когда я пытаюсь войти в систему как root?

Для сравнения у нас есть еще один внутренний сервер под управлением Windows 2003, на котором установлена ​​MySQL 5.0.45. Я могу войти в систему с учетной записью root оттуда нормально. Есть ли на нашем веб-сервере какие-то неясные настройки SELinux, которые препятствуют отправке пароля?

(И нет, я не пытаюсь настроить веб-сайт для подключения к базе данных как root. Для этого есть специальный пользователь. Это просто то, что может потребоваться время от времени для тестирования / настройки.)

Остановите демон mysql.

/etc/init.d/mysqld stop

Запустить демон mysql без проверки авторизации.

mysqld --skip-grant-tables --user=root &

Сбросьте пароль. новый пароль должен быть в одинарных кавычках.

mysql
mysql> UPDATE mysql.user SET Password='(hd3f6HD9Xdsr)' WHERE User='root';

mysql> FLUSH PRIVILEGES;

Перезапустите Mysql

/etc/init.d/mysqld stop
/etc/init.d/mysqld start

Также вы можете добавить пользователя и пароль mysql, как показано ниже, в файл /root/.my.cnf, чтобы вы могли войти в систему без ввода имени пользователя и пароля. В дальнейшем будет достаточно mysql.

root@server [~]# cat /root/.my.cnf
[client]
user="root"
pass=":Kv95r6j"

Вам необходимо явно предоставить пользователю разрешение на подключение с этого хоста, как это; (удалите <> и замените правильной строкой)

GRANT ALL PRIVILEGES ON <dbname>.* TO '<db-username>'@'<hostname>' IDENTIFIED BY '<user-password>' WITH GRANT OPTION;