1. Главная страница » Компьютеры

File access denied как исправить

Автор: | 16.12.2019
Номер ошибки: Ошибка 5 Access Denied
Название ошибки: Windows 7 Error Code 5 Access Denied
Описание ошибки: Ошибка 5 Access Denied: Возникла ошибка в приложении Windows 7. Приложение будет закрыто. Приносим извинения за неудобства.
Разработчик: Microsoft Corporation
Программное обеспечение: Windows 7
Относится к: Windows XP, Vista, 7, 8

Совместима с Windows 2000, XP, Vista, 7, 8 и 10

Содержание

Признаки ошибки 5 Access Denied

  • Появляется сообщение "Ошибка 5 Access Denied" и окно активной программы вылетает.
  • Ваш компьютер часто прекращает работу после отображения ошибки 5 Access Denied при запуске определенной программы.
  • Отображается “Windows 7 Error Code 5 Access Denied”.
  • Windows медленно работает и медленно реагирует на ввод с мыши или клавиатуры.
  • Компьютер периодически "зависает" на несколько секунд.

Такие сообщения об ошибках 5 Access Denied могут появляться в процессе установки программы, когда запущена программа, связанная с Microsoft Corporation (например, Windows 7), при запуске или завершении работы Windows, или даже при установке операционной системы Windows. Отслеживание момента появления ошибки 5 Access Denied является важной информацией при устранении проблемы.

Читайте также:  2749 Теле2 что за номер

Причины ошибки 5 Access Denied

  • Поврежденная загрузка или неполная установка программного обеспечения Windows 7.
  • Повреждение реестра Windows 7 из-за недавнего изменения программного обеспечения (установка или удаление), связанного с Windows 7.
  • Вирус или вредоносное ПО, которые повредили файл Windows или связанные с Windows 7 программные файлы.
  • Другая программа злонамеренно или по ошибке удалила файлы, связанные с Windows 7.

Ошибки типа Ошибки во время выполнения, такие как "Ошибка 5 Access Denied", могут быть вызваны целым рядом факторов, поэтому важно устранить каждую из возможных причин, чтобы предотвратить повторение ошибки в будущем.

Ошибки во время выполнения в базе знаний

star rating here

Как исправить ошибку Windows 7 5 Access Denied

Ниже описана последовательность действий по устранению ошибок, призванная решить проблемы Ошибка 5 Access Denied. Данная последовательность приведена в порядке от простого к сложному и от менее затратного по времени к более затратному, поэтому мы настоятельно рекомендуем следовать данной инструкции по порядку, чтобы избежать ненужных затрат времени и усилий.

Пожалуйста, учтите: Нажмите на изображение [ ] , чтобы развернуть инструкции по устранению проблем по каждому из шагов ниже. Вы также можете использовать изображение [ ], чтобы скрывать инструкции по мере их выполнения.

Шаг 1: Восстановить записи реестра, связанные с ошибкой 5 Access Denied

Редактирование реестра Windows вручную с целью удаления содержащих ошибки ключей Ошибка 5 Access Denied не рекомендуется, если вы не являетесь специалистом по обслуживанию ПК. Ошибки, допущенные при редактировании реестра, могут привести к неработоспособности вашего ПК и нанести непоправимый ущерб вашей операционной системе. На самом деле, даже одна запятая, поставленная не в том месте, может воспрепятствовать загрузке компьютера!

В связи с подобным риском мы настоятельно рекомендуем использовать надежные инструменты очистки реестра, такие как WinThruster [Загрузить] (разработанный Microsoft Gold Certified Partner), чтобы просканировать и исправить любые проблемы, связанные с Ошибка 5 Access Denied. Используя очистку реестра [Загрузить], вы сможете автоматизировать процесс поиска поврежденных записей реестра, ссылок на отсутствующие файлы (например, вызывающих ошибку %%error_name%%) и нерабочих ссылок внутри реестра. Перед каждым сканированием автоматически создается резервная копия, позволяющая отменить любые изменения одним кликом и защищающая вас от возможного повреждения компьютера. Самое приятное, что устранение ошибок реестра [Загрузить] может резко повысить скорость и производительность системы.

Предупреждение: Если вы не являетесь опытным пользователем ПК, мы НЕ рекомендуем редактирование реестра Windows вручную. Некорректное использование Редактора реестра может привести к серьезным проблемам и потребовать переустановки Windows. Мы не гарантируем, что неполадки, являющиеся результатом неправильного использования Редактора реестра, могут быть устранены. Вы пользуетесь Редактором реестра на свой страх и риск.

Перед тем, как вручную восстанавливать реестр Windows, необходимо создать резервную копию, экспортировав часть реестра, связанную с Ошибка 5 Access Denied (например, Windows 7):

  1. Нажмите на кнопку Начать.
  2. Введите "command" в строке поиска. ПОКА НЕ НАЖИМАЙТЕENTER!
  3. Удерживая клавиши CTRL-Shift на клавиатуре, нажмите ENTER.
  4. Будет выведено диалоговое окно для доступа.
  5. Нажмите Да.
  6. Черный ящик открывается мигающим курсором.
  7. Введите "regedit" и нажмите ENTER.
  8. В Редакторе реестра выберите ключ, связанный с Ошибка 5 Access Denied (например, Windows 7), для которого требуется создать резервную копию.
  9. В меню Файл выберите Экспорт.
  10. В списке Сохранить в выберите папку, в которую вы хотите сохранить резервную копию ключа Windows 7.
  11. В поле Имя файла введите название файла резервной копии, например "Windows 7 резервная копия".
  12. Убедитесь, что в поле Диапазон экспорта выбрано значение Выбранная ветвь.
  13. Нажмите Сохранить.
  14. Файл будет сохранен с расширением .reg.
  15. Теперь у вас есть резервная копия записи реестра, связанной с Windows 7.

Следующие шаги при ручном редактировании реестра не будут описаны в данной статье, так как с большой вероятностью могут привести к повреждению вашей системы. Если вы хотите получить больше информации о редактировании реестра вручную, пожалуйста, ознакомьтесь со ссылками ниже.

Мы не несем никакой ответственности за результаты действий, совершенных по инструкции, приведенной ниже — вы выполняете эти задачи на свой ​​страх и риск.

Шаг 2: Проведите полное сканирование вашего компьютера на вредоносное ПО

Есть вероятность, что ошибка 5 Access Denied может быть связана с заражением вашего компьютера вредоносным ПО. Эти вредоносные злоумышленники могут повредить или даже удалить файлы, связанные с Ошибки во время выполнения. Кроме того, существует возможность, что ошибка 5 Access Denied связана с компонентом самой вредоносной программы.

Совет: Если у вас еще не установлены средства для защиты от вредоносного ПО, мы настоятельно рекомендуем использовать Emsisoft Anti-Malware (скачать). В отличие от других защитных программ, данная программа предлагает гарантию удаления вредоносного ПО.

Шаг 3: Очистить систему от мусора (временных файлов и папок) с помощью очистки диска (cleanmgr)

Со временем ваш компьютер накапливает ненужные файлы в связи с обычным интернет-серфингом и повседневным использованием компьютера. Если такие ненужные файлы иногда не удалять, они могут привести к снижению быстродействия Windows 7 или к ошибке 5 Access Denied, возможно вследствие конфликтов файлов или перегрузки жесткого диска. Удаление таких временных файлов при помощи утилиты Очистка диска может не только устранить ошибку 5 Access Denied, но и существенно повысить быстродействие вашего компьютера.

Совет: Хотя утилита Очистки диска является прекрасным встроенным инструментом, она удаляет не все временные файлы с вашего компьютера. Другие часто используемые программы, такие как Microsoft Office, Firefox, Chrome, Live Messenger, а также сотни других программ не поддаются очистке при помощи программы Очистка диска (включая некоторые программы Microsoft Corporation).

Из-за недостатков утилиты Windows Очистка диска (cleanmgr) мы настоятельно рекомендуем использовать специализированное программное обеспечение очистки жесткого диска / защиты конфиденциальности, например WinSweeper [Загрузить] (разработано Microsoft Gold Partner), для очистки всего компьютера. Запуск WinSweeper [Загрузить] раз в день (при помощи автоматического сканирования) гарантирует, что ваш компьютер всегда будет чист, будет работает быстро и без ошибок %%error_name%%, связанных с временными файлами.

Как запустить Очистку диска (cleanmgr) (Windows XP, Vista, 7, 8 и 10):

  1. Нажмите на кнопку Начать.
  2. Введите "command" в строке поиска. ПОКА НЕ НАЖИМАЙТЕENTER!
  3. Удерживая клавиши CTRL-Shift на клавиатуре, нажмите ENTER.
  4. Будет выведено диалоговое окно для доступа.
  5. Нажмите Да.
  6. Черный ящик открывается мигающим курсором.
  7. Введите "cleanmgr" и нажмите ENTER.
  8. Программа Очистка диска приступит к подсчету занятого места на диске, которое вы можете освободить.
  9. Будет открыто диалоговое окно Очистка диска, содержащее флажки, которые вы можете выбрать. В большинстве случаев категория "Временные файлы" занимает большую часть дискового пространства.
  10. Установите флажки напротив категорий, которые вы хотите использовать для очистки диска, и нажмите OK.

Шаг 4: Обновите драйверы устройств на вашем компьютере

Ошибки 5 Access Denied могут быть связаны с повреждением или устареванием драйверов устройств. Драйверы с легкостью могут работать сегодня и перестать работать завтра по целому ряду причин. Хорошая новость состоит в том, что чаще всего вы можете обновить драйверы устройства, чтобы устранить проблему с Ошибка 5 Access Denied.

В связи с временными затратами и общей сложностью обновления драйверов мы настоятельно рекомендуем использовать утилиту обновления драйверов, например DriverDoc (разработана Microsoft Gold Partner), для автоматизации этого процесса.

Пожалуйста, учтите: Ваш файл Ошибка 5 Access Denied может и не быть связан с проблемами в драйверах устройств, но всегда полезно убедиться, что на вашем компьютере установлены новейшие версии драйверов оборудования, чтобы максимизировать производительность вашего ПК.

Шаг 5: Используйте Восстановление системы Windows, чтобы "Отменить" последние изменения в системе

Восстановление системы Windows позволяет вашему компьютеру "отправиться в прошлое", чтобы исправить проблемы Ошибка 5 Access Denied. Восстановление системы может вернуть системные файлы и программы на вашем компьютере к тому времени, когда все работало нормально. Это потенциально может помочь вам избежать головной боли от устранения ошибок, связанных с 5 Access Denied.

Пожалуйста, учтите: использование восстановления системы не повлияет на ваши документы, изображения или другие данные.

Чтобы использовать Восстановление системы (Windows XP, Vista, 7, 8 и 10):

  1. Нажмите на кнопку Начать.
  2. В строке поиска введите "Восстановление системы" и нажмите ENTER.
  3. В окне результатов нажмите Восстановление системы.
  4. Введите пароль администратора (при появлении запроса).
  5. Следуйте инструкциям Мастера для выбора точки восстановления.
  6. Восстановить ваш компьютер.

Шаг 6: Удалите и установите заново программу Windows 7, связанную с Ошибка 5 Access Denied

Инструкции для Windows 7 и Windows Vista:

  1. Откройте «Программы и компоненты», нажав на кнопку Пуск.
  2. Нажмите Панель управления в меню справа.
  3. Нажмите Программы.
  4. Нажмите Программы и компоненты.
  5. Найдите Windows 7 в столбце Имя.
  6. Нажмите на запись Windows 7.
  7. Нажмите на кнопку Удалить в верхней ленте меню.
  8. Следуйте инструкциям на экране для завершения удаления Windows 7.

Инструкции для Windows XP:

  1. Откройте «Программы и компоненты», нажав на кнопку Пуск.
  2. Нажмите Панель управления.
  3. Нажмите Установка и удаление программ.
  4. Найдите Windows 7 в списке Установленные программы.
  5. Нажмите на запись Windows 7.
  6. Нажмите на кнопку Удалить справа.
  7. Следуйте инструкциям на экране для завершения удаления Windows 7.

Инструкции для Windows 8:

  1. Установите указатель мыши в левой нижней части экрана для показа изображения меню Пуск.
  2. Щелкните правой кнопкой мыши для вызова Контекстного меню Пуск.
  3. Нажмите Программы и компоненты.
  4. Найдите Windows 7 в столбце Имя.
  5. Нажмите на запись Windows 7.
  6. Нажмите Удалить/изменить в верхней ленте меню.
  7. Следуйте инструкциям на экране для завершения удаления Windows 7.

После того, как вы успешно удалили программу, связанную с Ошибка 5 Access Denied (например, Windows 7), заново установите данную программу, следуя инструкции Microsoft Corporation.

Совет: Если вы абсолютно уверены, что ошибка 5 Access Denied связана с определенной программой Microsoft Corporation, удаление и повторная установка программы, связанной с Ошибка 5 Access Denied с большой вероятностью решит вашу проблему.

Шаг 7: Запустите проверку системных файлов Windows ("sfc /scannow")

Проверка системных файлов представляет собой удобный инструмент, включаемый в состав Windows, который позволяет просканировать и восстановить поврежденные системные файлы Windows (включая те, которые имеют отношение к Ошибка 5 Access Denied).

Чтобы запустить проверку системных файлов (Windows XP, Vista, 7, 8 и 10):

  1. Нажмите на кнопку Начать.
  2. Введите "command" в строке поиска. ПОКА НЕ НАЖИМАЙТЕENTER!
  3. Удерживая клавиши CTRL-Shift на клавиатуре, нажмите ENTER.
  4. Будет выведено диалоговое окно для доступа.
  5. Нажмите Да.
  6. Черный ящик открывается мигающим курсором.
  7. Введите "sfc /scannow" и нажмите ENTER.
  8. Проверка системных файлов начнет сканирование на наличие проблем Ошибка 5 Access Denied и других системных файлов (проявите терпение — проверка может занять длительное время).
  9. Следуйте командам на экране.

Шаг 8: Установите все доступные обновления Windows

Microsoft постоянно обновляет и улучшает системные файлы Windows, связанные с Ошибка 5 Access Denied. Иногда для решения проблемы Ошибки во время выполнения нужно просто напросто обновить Windows при помощи последнего пакета обновлений или другого патча, которые Microsoft выпускает на постоянной основе.

Чтобы проверить наличие обновлений Windows (Windows XP, Vista, 7, 8 и 10):

  1. Нажмите на кнопку Начать.
  2. Введите "update" в строке поиска и нажмите ENTER.
  3. Будет открыто диалоговое окно Обновление Windows.
  4. Если имеются доступные обновления, нажмите на кнопку Установить обновления.

Шаг 9: Произведите чистую установку Windows

Предупреждение: Мы должны подчеркнуть, что переустановка Windows займет очень много времени и является слишком сложной задачей, чтобы решить проблемы Ошибка 5 Access Denied. Во избежание потери данных вы должны быть уверены, что вы создали резервные копии всех важных документов, изображений, программ установки программного обеспечения и других персональных данных перед началом процесса. Если вы сейчас е создаете резервные копии данных, вам стоит немедленно заняться этим (скачать рекомендованное решение для резервного копирования), чтобы защитить себя от безвозвратной потери данных.

Пожалуйста, учтите: Если проблема 5 Access Denied не устранена после чистой установки Windows, это означает, что проблема Ошибки во время выполнения ОБЯЗАТЕЛЬНО связана с аппаратным обеспечением. В таком случае, вам, вероятно, придется заменить соответствующее оборудование, вызывающее ошибку 5 Access Denied.

Информация об операционной системе

Сообщения об ошибках 5 Access Denied могут появляться в любых из нижеперечисленных операционных систем Microsoft Windows:

  • Windows 10
  • Windows 8
  • Windows 7
  • Windows Vista
  • Windows XP
  • Windows ME
  • Windows 2000

Проблема с 5 Access Denied все еще не устранена?

Обращайтесь к нам в любое время в социальных сетях для получения дополнительной помощи:

Об авторе: Джей Гитер (Jay Geater) является президентом и генеральным директором корпорации Solvusoft — глобальной компании, занимающейся программным обеспечением и уделяющей основное внимание новаторским сервисным программам. Он всю жизнь страстно увлекался компьютерами и любит все, связанное с компьютерами, программным обеспечением и новыми технологиями.

Если при попытке подсоединения к серверу MySQL вы сталкиваетесь с ошибкой Access denied , то воспользуйтесь приведенным ниже списком. В нем перечислены меры, которые можно принять для решения этой проблемы:

Запускали ли вы после инсталляции MySQL скрипт mysql_install_db для установки начального содержимого таблиц привилегий? Если нет, сделайте это. Обратитесь к разделу Задание изначальных привилегий MySQL. Проверьте первоначальные привилегии с помощью следующей команды:

Подсоединение должно произойти без сбоя. Следует также убедиться, что в каталоге базы данных MySQL имеется файл user.MYD . Обычно он находится в директории PATH/var/mysql/user.MYD , где PATH — путь к корневому каталогу инсталляции MySQL.

После новой инсталляции следует подсоединиться к серверу и создать пользователей, а также установить для них права доступа:

Сервер разрешит подсоединение, т.к. пользователь MySQL с именем пользователя root исходно не имеет пароля. Но в этом заключается также и риск нарушения безопасности системы, поэтому при создании остальных пользователей MySQL, вам, помимо прочего, следует задать пароль для пользователя root . Если при попытке подсоединения от имени пользователя root вы получите следующую ошибку:

это означает, что в таблице user отсутствует запись со значением ‘root’ в столбце User и mysqld не может определить имя хоста для вашего клиента. В этом случае необходимо перезапустить сервер с опцией —skip-grant-tables и отредактировать файл /etc/hosts или windowshosts , добавив в него запись для вашего хоста.

Если вы столкнетесь с такой ошибкой, как:

это означает, что используется неверный пароль. Обратитесь к разделу Задание паролей. Если вы забыли пароль для пользователя root , то перезапустите mysqld с опцией —skip-grant-tables и измените пароль. Обратитесь к разделу Как переустановить забытый пароль пользователя root. Такая ошибка может появляться даже в том случае, если вы не задавали пароля вообще — это значит, что в каком-то файле my.ini имеется неверный пароль. Обратитесь к разделу Файлы параметров my.cnf. Отменить использование файлов опций можно с помощью опции the —no-defaults , как показано ниже:

Запускали ли вы скрипт mysql_fix_privilege_tables при обновлении имеющейся инсталляции MySQL, если установленная версия — более ранняя, чем 3.22.11, а обновляется она до 3.22.11 или более поздней? Если нет, сделайте это. Начиная с MySQL 3.22.11, когда оператор GRANT стал функциональным, структура таблиц привилегий изменилась.

Если во время сеанса ваши привилегии изменились, то, возможно, их изменил суперпользователь. Перезагрузка таблиц привилегий отражается не только на новых подсоединениях клиентов, но также на уже имеющихся, как это показано в разделе Когда изменения в привилегиях вступают в силу.

Если не удается добиться, чтобы пароль работал, помните, что функция PASSWORD() должна использоваться, если вы задаете пароль с помощью операторов INSERT , UPDATE или SET PASSWORD . Если же вы задаете пароль с помощью оператора GRANT . INDENTIFIED BY или команды mysqladmin password , функция PASSWORD() не нужна. Обратитесь к разделу Задание паролей.

localhost — это синоним имени вашего локального хоста, и, если хост явно не задан, также устанавливаемое по умолчанию имя хоста, к которому клиенты пытаются подключиться. Однако подсоединения к localhost не действуют, если в вашей рабочей системе используются MIT-потоки и MySQL старше версии 3.23.27 (подсоединения к localhost осуществляются с использованием сокетов Unix, а они не поддерживались тогда технологией MIT-потоков). Чтобы в таких системах эта проблема не возникала, следует явным образом задать имя серверного хоста с помощью опции —host . Таким образом будет установлено подсоединение к серверу mysqld по протоколу TCP/IP. В этом случае в записях таблицы user , хранящейся на серверном хосте, должно быть указано реальное имя хоста. (Это справедливо даже для тех случаев, когда клиентская программа и сервер запускаются на одном хосте).

Если при попытке подсоединения к базе данных с помощью команды mysql -u user_name db_name возникает ошибка Access denied , причина этого, возможно, кроется в таблице user . Чтобы проверить это, выполните команду mysql -u root mysql и введите следующий SQL-оператор:

В результате будет выведена запись со столбцами Host и User , соответствующими имени вашего компьютера и вашему имени пользователя MySQL.

Сообщение об ошибке Access denied информирует вас о том, под каким именем вы пытаетесь войти в систему, об имени хоста, с которого вы пытаетесь установить соединение, и о том, использовали ли вы при этом пароль или нет. Как правило, в таблице user будет одна запись, точно соответствующая имени хоста и имени пользователя, указанным в сообщении об ошибке. Например, если вы получите сообщение об ошибке, в котором сказано Using password: NO , это означает, что вы пытались войти в систему, не указав пароль.

Если при попытке подсоединения не с того компьютера, на котором работает сервер MySQL, а с другого, вы получите сообщение об ошибке, приведенное ниже, то в таблице user отсутствует строка с таким именем хоста:

Чтобы исправить эту ошибку, с помощью утилиты командной строки mysql (на серверном хосте!) добавьте строку в таблицу user , db или host с комбинацией имени пользователя/хоста, соответствующей той, которую вы используете при попытке подсоединения. Затем выполните команду mysqladmin flush-privileges . Если вы используете MySQL версии, отличной от Version 3.22, и вам неизвестно имя хоста или IP-адрес компьютера, с которого вы подсоединяетесь, введите в таблицу user запись со значением ‘%’ в поле Host и перезапустите mysqld на серверной машине с опцией —log . Когда соединение с клиентской машины будет установлено, вы найдете в журнале регистрации MySQL информацию об имени хоста, с которого вы подсоединились. (После этого следует заменить в записи таблицы user значение ‘%’ настоящим именем хоста, из журнала регистрации. Иначе ваша система останется незащищенной.)

В Linux причиной такой ошибки может быть то, что бинарная версия MySQL скомпилирована с версией glibc, отличной от используемой вами. В этом случае нужно будет либо обновить ОС/glibc, используемые вами, либо загрузить исходный код MySQL и скомпилировать сервер самостоятельно. Как правило, исходный RPM компилируется и инсталлируется элементарно, так что это не составит серьезной проблемы.

Если будет выдано сообщение об ошибке, в котором имя хоста не указано вообще или указан IP-адрес, хотя вы при попытке подсоединения указывали имя хоста:

то это означает, что ошибка возникает при попытке MySQL сопоставить IP-адрес с именем хоста. В этом случае вы можете выполнить команду mysqladmin flush-hosts , чтобы сбросить внутреннюю кэш-память DNS. Обратитесь к разделу Как MySQL использует DNS. Вот некоторые способы решения этой проблемы:

Попробуйте выяснить, что не так с вашим сервером DNS, и устраните неисправность.

Задайте IP-адреса вместо имен хостов таблицах привилегий MySQL.

Запустите mysqld с опцией —skip-name-resolve .

Запустите mysqld с опцией —skip-host-cache .

Подключитесь к localhost если ваш сервер и клиент работают на одном и том же компьютере.

Поместите имена клиентских машин в каталог /etc/hosts .

Если команда mysql -u root test работает успешно, а команда mysql -h your_hostname -u root tes t приводит к ошибке Access denied , то, возможно, в таблице user имя вашего хоста указано неверно. Одна из распространенных проблем здесь заключается в том, что в поле Host записи, хранящейся в таблице user , задается только имя хоста, в то время как процедуры разрешения имен, используемые вашей системой, возвращают полностью определенное доменное имя (или наоборот). Например, если в таблице user имеется запись со значением ‘tcx’ в поле host , а DNS при этом сообщает MySQL, что имя хоста — ‘tcx.subnet.se’ , эта запись действовать не будет. Попробуйте добавить в таблицу user запись, указав в колонке Host IP-адрес хоста. (В качестве альтернативы можно добавить в таблицу user запись со значением в поле Host , содержащим шаблонный символ, например ‘tcx.%’ . Но использовать имена хостов, оканчивающиеся на ‘%’ — небезопасно и делать это не рекомендуется!)

Если команда mysql -u user_name test работает успешно, а команда mysql -u user_name other_db_nam e — нет, то в таблице db нет записи, соответствующей other_db_name .

Если команда mysql -u user_name db_name выполняется успешно на том компьютере, где установлен сервер, а mysql -u host_name -u user_name db_name не работает при выполнении ее на другой клиентской машине, то в таблицах user или db эта клиентская машина не зарегистрирована.

Если не удается выяснить причину ошибки Access denied , удалите из таблицы user все записи, в которых значение в поле Host включает шаблонные символы (записи, содержащие символы ‘ ‘%’ ‘ или ‘ ‘_’ ‘). Очень распространенной ошибкой является следующая: пользователь вставляет новую запись со значением ‘%’ в поле Host и со значением ‘some user’ — в поле User , полагая, что после этого для подсоединения с той же самой машины он сможет использовать localhost . Такой расчет неверен, и причина здесь в том, что устанавливаемые по умолчанию привилегии включают запись со значением ‘localhost’ в поле Host и пустым полем User . И поскольку в этой записи значение ‘localhost’ более конкретно, чем ‘%’, то именно она при подсоединении с localhost предшествует новой записи и, соответственно, будет выбрана и сработает! Правильным в этом случае будет вставить вторую запись со значением ‘localhost’ в поле Host и значением ‘some_user’ — в поле User или удалить запись со значением ‘localhost’ в поле Host и пустым полем User .

Если вы получите следующую ошибку, то эта проблема, возможно, связана с таблицей db или таблицей host :

Если в записи, выбранной из таблицы db , столбец Host — пустой, удостоверьтесь, что в таблице host имеется по крайней мере одна соответствующая запись, указывающая, к каким хостам относится запись из таблицы db . Если ошибка возникает при выполнении SQL-команды SELECT . INTO OUTFILE или LOAD DATA INFILE , то в вашей записи из таблицы user , вероятно, отсутствует разрешение на предоставление привилегии FILE .

Помните, что клиентские программы будут использовать параметры подсоединения, указанные файлах конфигурации или переменных окружения. Обратитесь к разделу Переменные окружения. Если есть подозрение, что клиент отсылает неверные устанавливаемые по умолчанию параметры подсоединения, в случае, когда вы не задаете их в командной строке, проверьте ваше окружение и файл my.cnf в своей домашней директории. Можете также проверить конфигурационные файлы MySQL относящиеся ко все системе, хотя параметры клиентского подсоединения вряд ли указаны именно здесь. Обратитесь к разделу Файлы параметров my.cnf. Если ошибка Access denied возникает при выполнении вашей клиентской программы без каких-либо опций, убедитесь, что ни в одном из ваших файлов опций не указан старый пароль! Обратитесь к разделу Файлы параметров my.cnf.

Если вы вносите изменения в таблицы привилегий непосредственно (с помощью операторов INSERT или UPDATE ), а ваши изменения, похоже, игнорируются, то следует выдать оператор FLUSH PRIVILEGES или выполнить команду mysqladmin flush-privileges — для того, чтобы заставить сервер перечитать таблицы привилегий. В противном случае ваши изменения вступят в силу лишь при последующем перезапуске сервера. Помните, что после того, как вы зададите пароль от имени пользователя, вам нужно будет указывать его только после сброса привилегий, т.к. серверу еще не будет известно о том, что вы изменили пароль!

При возникновении проблемы с доступом при использовании Perl-, PHP-, Python- или ODBC-программ, попробуйте установить соединение с сервером при помощи команды mysql -u user_name db_name или команды mysql -u user_name -pyour_pass db_name . Если ваш клиент mysql обеспечивает подсоединение, то проблема связана не с привилегиями доступа, а с вашей программой. (Заметим, что между -p и паролем пробела нет; для задания пароля можно также использовать синтаксическую структуру —password=your_pass . Если вы используете только саму опцию -p , MySQL запросит у вас пароль)

При тестировании запускайте демон mysqld с опцией —skip-grant-tables . Тогда вы сможете изменять таблицы привилегий MySQL и с помощью скрипта mysqlaccess проверять, произвели ли сделанные вами изменения желаемый эффект. Если результаты вас устраивают, выполните команду mysqladmin flush-privileges , чтобы приказать серверу mysqld приступить к использованию новых таблиц привилегий. Внимание : перезагрузка таблиц привилегий отменяет опцию —skip-grant-tables . Это позволяет заставить сервер приступить к использованию новых таблиц привилегий без завершения его работы и перезагрузки.

Если ничего не помогает, запустите демон mysqld daemon с опцией отладки (например —debug=d,general,query ). В результате будет выведена информация о неудачных подсоединениях, с указанием хоста и пользователя, а также обо всех обработанных командах. Обратитесь к разделу Создание трассировочных файлов.

Если у вас имеется какая-либо проблема с таблицами привилегий MySQL и вы полагаете, что необходимо сообщить о ней в список рассылки, нужно обязательно приложить к своему отчету распечатку таблиц привилегий MySQL. Это можно сделать с помощью команды mysqldump mysql . Отчет о проблеме, как и в других случаях, отправляется с помощью скрипта mysqlbug . Обратитесь к разделу Как отправлять отчеты об ошибках или проблемах. В некоторых случаях для выполнения скрипта mysqldump возможно, потребуется перезапустить mysqld с опцией —skip-grant-tables .

Если при попытке подсоединения к серверу MySQL вы сталкиваетесь с ошибкой Access denied , то воспользуйтесь приведенным ниже списком. В нем перечислены меры, которые можно принять для решения этой проблемы:

Запускали ли вы после инсталляции MySQL скрипт mysql_install_db для установки начального содержимого таблиц привилегий? Если нет, сделайте это. Обратитесь к разделу See Раздел 4.3.4, «Задание изначальных привилегий MySQL». Проверьте первоначальные привилегии с помощью следующей команды:

Подсоединение должно произойти без сбоя. Следует также убедиться, что в каталоге базы данных MySQL имеется файл user.MYD . Обычно он находится в директории PATH/var/mysql/user.MYD , где PATH — путь к корневому каталогу инсталляции MySQL.

После новой инсталляции следует подсоединиться к серверу и создать пользователей, а также установить для них права доступа:

Сервер разрешит подсоединение, т.к. пользователь MySQL с именем пользователя root исходно не имеет пароля. Но в этом заключается также и риск нарушения безопасности системы, поэтому при создании остальных пользователей MySQL, вам, помимо прочего, следует задать пароль для пользователя root . Если при попытке подсоединения от имени пользователя root вы получите следующую ошибку:

это означает, что в таблице user отсутствует запись со значением ‘root’ в столбце User и mysqld не может определить имя хоста для вашего клиента. В этом случае необходимо перезапустить сервер с опцией —skip-grant-tables и отредактировать файл /etc/hosts или windowshosts , добавив в него запись для вашего хоста.

Если вы столкнетесь с такой ошибкой, как:

это означает, что используется неверный пароль. Обратитесь к разделу See Раздел 4.3.7, «Задание паролей». Если вы забыли пароль для пользователя root , то перезапустите mysqld с опцией —skip-grant-tables и измените пароль. Обратитесь к разделу See Раздел A.4.2, «Как переустановить забытый пароль пользователя root ». Такая ошибка может появляться даже в том случае, если вы не задавали пароля вообще — это значит, что в каком-то файле my.ini имеется неверный пароль. Обратитесь к разделу See Раздел 4.1.2, «Файлы параметров my.cnf ». Отменить использование файлов опций можно с помощью опции the —no-defaults , как показано ниже:

Запускали ли вы скрипт mysql_fix_privilege_tables при обновлении имеющейся инсталляции MySQL, если установленная версия — более ранняя, чем 3.22.11, а обновляется она до 3.22.11 или более поздней? Если нет, сделайте это. Начиная с MySQL 3.22.11, когда оператор GRANT стал функциональным, структура таблиц привилегий изменилась.

Если во время сеанса ваши привилегии изменились, то, возможно, их изменил суперпользователь. Перезагрузка таблиц привилегий отражается не только на новых подсоединениях клиентов, но также на уже имеющихся, как это показано в разделе See Раздел 4.3.3, «Когда изменения в привилегиях вступают в силу».

Если не удается добиться, чтобы пароль работал, помните, что функция PASSWORD() должна использоваться, если вы задаете пароль с помощью операторов INSERT , UPDATE или SET PASSWORD . Если же вы задаете пароль с помощью оператора GRANT . INDENTIFIED BY или команды mysqladmin password , функция PASSWORD() не нужна. Обратитесь к разделу See Раздел 4.3.7, «Задание паролей».

localhost — это синоним имени вашего локального хоста, и, если хост явно не задан, также устанавливаемое по умолчанию имя хоста, к которому клиенты пытаются подключиться. Однако подсоединения к localhost не действуют, если в вашей рабочей системе используются MIT-потоки и MySQL старше версии 3.23.27 (подсоединения к localhost осуществляются с использованием сокетов Unix, а они не поддерживались тогда технологией MIT-потоков). Чтобы в таких системах эта проблема не возникала, следует явным образом задать имя серверного хоста с помощью опции —host . Таким образом будет установлено подсоединение к серверу mysqld по протоколу TCP/IP. В этом случае в записях таблицы user , хранящейся на серверном хосте, должно быть указано реальное имя хоста. (Это справедливо даже для тех случаев, когда клиентская программа и сервер запускаются на одном хосте).

Если при попытке подсоединения к базе данных с помощью команды mysql -u user_name db_name возникает ошибка Access denied , причина этого, возможно, кроется в таблице user . Чтобы проверить это, выполните команду mysql -u root mysql и введите следующий SQL-оператор:

В результате будет выведена запись со столбцами Host и User , соответствующими имени вашего компьютера и вашему имени пользователя MySQL.

Сообщение об ошибке Access denied информирует вас о том, под каким именем вы пытаетесь войти в систему, об имени хоста, с которого вы пытаетесь установить соединение, и о том, использовали ли вы при этом пароль или нет. Как правило, в таблице user будет одна запись, точно соответствующая имени хоста и имени пользователя, указанным в сообщении об ошибке. Например, если вы получите сообщение об ошибке, в котором сказано Using password: NO , это означает, что вы пытались войти в систему, не указав пароль.

Если при попытке подсоединения не с того компьютера, на котором работает сервер MySQL, а с другого, вы получите сообщение об ошибке, приведенное ниже, то в таблице user отсутствует строка с таким именем хоста:

Чтобы исправить эту ошибку, с помощью утилиты командной строки mysql (на серверном хосте!) добавьте строку в таблицу user , db или host с комбинацией имени пользователя/хоста, соответствующей той, которую вы используете при попытке подсоединения. Затем выполните команду mysqladmin flush-privileges . Если вы используете MySQL версии, отличной от Version 3.22, и вам неизвестно имя хоста или IP-адрес компьютера, с которого вы подсоединяетесь, введите в таблицу user запись со значением ‘%’ в поле Host и перезапустите mysqld на серверной машине с опцией —log . Когда соединение с клиентской машины будет установлено, вы найдете в журнале регистрации MySQL информацию об имени хоста, с которого вы подсоединились. (После этого следует заменить в записи таблицы user значение ‘%’ настоящим именем хоста, из журнала регистрации. Иначе ваша система останется незащищенной.)

В Linux причиной такой ошибки может быть то, что бинарная версия MySQL скомпилирована с версией glibc, отличной от используемой вами. В этом случае нужно будет либо обновить ОС/glibc, используемые вами, либо загрузить исходный код MySQL и скомпилировать сервер самостоятельно. Как правило, исходный RPM компилируется и инсталлируется элементарно, так что это не составит серьезной проблемы.

Если будет выдано сообщение об ошибке, в котором имя хоста не указано вообще или указан IP-адрес, хотя вы при попытке подсоединения указывали имя хоста:

то это означает, что ошибка возникает при попытке MySQL сопоставить IP-адрес с именем хоста. В этом случае вы можете выполнить команду mysqladmin flush-hosts , чтобы сбросить внутреннюю кэш-память DNS. Обратитесь к разделу See Раздел 5.5.5, «Как MySQL использует DNS». Вот некоторые способы решения этой проблемы:

Попробуйте выяснить, что не так с вашим сервером DNS, и устраните неисправность.

Задайте IP-адреса вместо имен хостов таблицах привилегий MySQL.

Запустите mysqld с опцией —skip-name-resolve .

Запустите mysqld с опцией —skip-host-cache .

Подключитесь к localhost если ваш сервер и клиент работают на одном и том же компьютере.

Поместите имена клиентских машин в каталог /etc/hosts .

Если команда mysql -u root test работает успешно, а команда mysql -h your_hostname -u root tes t приводит к ошибке Access denied , то, возможно, в таблице user имя вашего хоста указано неверно. Одна из распространенных проблем здесь заключается в том, что в поле Host записи, хранящейся в таблице user , задается только имя хоста, в то время как процедуры разрешения имен, используемые вашей системой, возвращают полностью определенное доменное имя (или наоборот). Например, если в таблице user имеется запись со значением ‘tcx’ в поле host , а DNS при этом сообщает MySQL, что имя хоста — ‘tcx.subnet.se’ , эта запись действовать не будет. Попробуйте добавить в таблицу user запись, указав в колонке Host IP-адрес хоста. (В качестве альтернативы можно добавить в таблицу user запись со значением в поле Host , содержащим шаблонный символ, например ‘tcx.%’ . Но использовать имена хостов, оканчивающиеся на ‘%’ — небезопасно и делать это не рекомендуется!)

Если команда mysql -u user_name test работает успешно, а команда mysql -u user_name other_db_nam e — нет, то в таблице db нет записи, соответствующей other_db_name .

Если команда mysql -u user_name db_name выполняется успешно на том компьютере, где установлен сервер, а mysql -u host_name -u user_name db_name не работает при выполнении ее на другой клиентской машине, то в таблицах user или db эта клиентская машина не зарегистрирована.

Если не удается выяснить причину ошибки Access denied , удалите из таблицы user все записи, в которых значение в поле Host включает шаблонные символы (записи, содержащие символы ‘ ‘%’ ‘ или ‘ ‘_’ ‘). Очень распространенной ошибкой является следующая: пользователь вставляет новую запись со значением ‘%’ в поле Host и со значением ‘some user’ — в поле User , полагая, что после этого для подсоединения с той же самой машины он сможет использовать localhost . Такой расчет неверен, и причина здесь в том, что устанавливаемые по умолчанию привилегии включают запись со значением ‘localhost’ в поле Host и пустым полем User . И поскольку в этой записи значение ‘localhost’ более конкретно, чем ‘%’, то именно она при подсоединении с localhost предшествует новой записи и, соответственно, будет выбрана и сработает! Правильным в этом случае будет вставить вторую запись со значением ‘localhost’ в поле Host и значением ‘some_user’ — в поле User или удалить запись со значением ‘localhost’ в поле Host и пустым полем User .

Если вы получите следующую ошибку, то эта проблема, возможно, связана с таблицей db или таблицей host :

Если в записи, выбранной из таблицы db , столбец Host — пустой, удостоверьтесь, что в таблице host имеется по крайней мере одна соответствующая запись, указывающая, к каким хостам относится запись из таблицы db . Если ошибка возникает при выполнении SQL-команды SELECT . INTO OUTFILE или LOAD DATA INFILE , то в вашей записи из таблицы user , вероятно, отсутствует разрешение на предоставление привилегии FILE .

Помните, что клиентские программы будут использовать параметры подсоединения, указанные файлах конфигурации или переменных окружения. Обратитесь к разделу See Приложение E, Переменные окружения. Если есть подозрение, что клиент отсылает неверные устанавливаемые по умолчанию параметры подсоединения, в случае, когда вы не задаете их в командной строке, проверьте ваше окружение и файл my.cnf в своей домашней директории. Можете также проверить конфигурационные файлы MySQL относящиеся ко все системе, хотя параметры клиентского подсоединения вряд ли указаны именно здесь. Обратитесь к разделу See Раздел 4.1.2, «Файлы параметров my.cnf ». Если ошибка Access denied возникает при выполнении вашей клиентской программы без каких-либо опций, убедитесь, что ни в одном из ваших файлов опций не указан старый пароль! Обратитесь к разделу See Раздел 4.1.2, «Файлы параметров my.cnf ».

Если вы вносите изменения в таблицы привилегий непосредственно (с помощью операторов INSERT или UPDATE ), а ваши изменения, похоже, игнорируются, то следует выдать оператор FLUSH PRIVILEGES или выполнить команду mysqladmin flush-privileges — для того, чтобы заставить сервер перечитать таблицы привилегий. В противном случае ваши изменения вступят в силу лишь при последующем перезапуске сервера. Помните, что после того, как вы зададите пароль от имени пользователя, вам нужно будет указывать его только после сброса привилегий, т.к. серверу еще не будет известно о том, что вы изменили пароль!

При возникновении проблемы с доступом при использовании Perl-, PHP-, Python- или ODBC-программ, попробуйте установить соединение с сервером при помощи команды mysql -u user_name db_name или команды mysql -u user_name -pyour_pass db_name . Если ваш клиент mysql обеспечивает подсоединение, то проблема связана не с привилегиями доступа, а с вашей программой. (Заметим, что между -p и паролем пробела нет; для задания пароля можно также использовать синтаксическую структуру —password=your_pass . Если вы используете только саму опцию -p , MySQL запросит у вас пароль)

При тестировании запускайте демон mysqld с опцией —skip-grant-tables . Тогда вы сможете изменять таблицы привилегий MySQL и с помощью скрипта mysqlaccess проверять, произвели ли сделанные вами изменения желаемый эффект. Если результаты вас устраивают, выполните команду mysqladmin flush-privileges , чтобы приказать серверу mysqld приступить к использованию новых таблиц привилегий. Внимание : перезагрузка таблиц привилегий отменяет опцию —skip-grant-tables . Это позволяет заставить сервер приступить к использованию новых таблиц привилегий без завершения его работы и перезагрузки.

Если ничего не помогает, запустите демон mysqld daemon с опцией отладки (например —debug=d,general,query ). В результате будет выведена информация о неудачных подсоединениях, с указанием хоста и пользователя, а также обо всех обработанных командах. Обратитесь к разделу See Раздел D.1.2, «Создание трассировочных файлов».

Если у вас имеется какая-либо проблема с таблицами привилегий MySQL и вы полагаете, что необходимо сообщить о ней в список рассылки, нужно обязательно приложить к своему отчету распечатку таблиц привилегий MySQL. Это можно сделать с помощью команды mysqldump mysql . Отчет о проблеме, как и в других случаях, отправляется с помощью скрипта mysqlbug . Обратитесь к разделу See Раздел 1.8.1.3, «Как отправлять отчеты об ошибках или проблемах». В некоторых случаях для выполнения скрипта mysqldump возможно, потребуется перезапустить mysqld с опцией —skip-grant-tables .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *