Ошибка mysqli real connect 1045 РЕШЕНИЕ тут

3 способа РЕШЕНИЯ по исправлению ошибки mysqli real connect (): (HY000/1045): Access denied for user ‘username’@’localhost’ на сервере Centos 7 и VestaCP

Ошибка mysqli real connect (): (HY000/1045): Access denied for user ‘username’@’localhost’ очень часто возникает при обновлении версии PHP на веб сервере или самой базы данных,  особенно при использовании панели управления VestaCP.

Содержание:

Введение — ошибка mysql 1045

1 способ устранения ошибки mysql 1045

2 способ устранения ошибки mysql 1045

3 способ устранения ошибки mysql 1045

Заключение по устранению ошибки mysql 1045

Введение — ошибка mysql 1045

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

Итак:

При создании пользователя базы данных MySQL учитывается 3 параметра, а не два. Первый параметр это username, имя пользователя базы данных, второй параметр, это имя хоста, под именем хоста подразумевается разрешение входа в базу, или с определенного IP адреса, или с определенного домена, или с любой машины кроме локальной, или только с локальной машины. Под локальной машиной подразумевается Ваш сервер, где расположена сама база данных и панель phpmyadmin.

Поясняю:

  • Пользователь например, root@localhost имеет имя root, свой пароль и право входить только с локальной машины, то есть с Вашего сервера через командную строку или панель управления.
  • Пользователь например, root@’мой домашний ip’ имеет имя root, свой пароль и право входить только с домашнего компьютера.
  • Пользователь например, root@’%’ имеет имя root, свой пароль и право входить с любого компьютера, кроме локального, то есть Вашей панели управления веб сервером.

Знак ‘%’ в одинарных кавычках указывает именно на право входить в базу с любого компьютера, кроме локальной машины.

Пользователей с именем root может быть два, три и более. Все эти пользователи будут иметь разные пароли и разные разрешения на вход с определенных хостов.

Ошибка mysqli-real-connect-hy000-1045
Ошибка mysqli-real-connect-hy000-1045

1 способ устранения ошибки mysql 1045

Ошибка 1045

ERROR 1045 (28000): Access denied for user ‘ root’@’localhost’ (using password: YES)

Самая распространенная и банальная ошибка это неправильная пара логина и пароля для входа в БД. Грубо говоря, Вы можете пытаться входить под пользователем root@’%’, вводя правильный никнейм и пароль через установленную на сервере панель  phpmyadmin. Но данный пользователь имеет право заходить с любого компьютера, кроме локальной машины. А панель phpmyadmin как раз является локальной машиной. Таким образом Вы будите получать данную ошибку.

Решение:

Самое простое, это попробовать ввести другой пароль от указанного пользователя. Но пароль может быть задан автоматически (в частности root), может быть пустым или просто утерянным.

Вам необходимо войти в MySQL через терминал в командной строке. Лично я использую программу putty, как и 99% администраторов веб сервера. Для того, чтобы попасть в БД, необходимо предварительно отредактировать конфигурационный файл под названием my.cnf. В операционной системе Centos 7 он находится /etc/my.cnf. Скачайте данный файл с сервера и вставьте в него после  такую строку: skip-grant-tables, должно получится примерно так:


[mysqld]
skip-grant-tables
другие параметры

Залейте файл с новыми параметрами на сервер, предварительно удалив старый, а лучше просто переименуйте старый файл. Перезапустите сервер БД через Вашу панель управления.

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

Теперь откройте терминал и войдите под пользователем root без пароля, введя команду:


sudo mysql -u root

Далее введите команду:


SELECT user,host,password FROM mysql.user;
Если все сделали правильно, то будет показано вот такое окно:

Вход в базу данных без пароля
Вход в БД под root без пароля

Из таблицы видно, что пользователя root вообще НЕ существует, однако после правки выше указанного конфига, я без труда вошел под root и без пароля. Так же видно из таблицы, что присутствуют 2 пользователя — admin с паролями и доступом с локальной машины (непосредственно с сервера через панель phpmyadmin) и с любого домашнего компьютера через терминал.

Этих пользователей я создавал сам и пароли от них я знаю. Исходя из полученной информации, я могу без труда войти в панель phpmyadmin. И создать любого необходимого пользователя с любыми привилегиями (правами).

Пользователь root отсутствует по причине удаления. Я его просто удалил для написания данной статьи. У вас он скорей всего присутствует и таблица будет гораздо шире. Это просто мой тестовый сервер для экспериментов.

Давайте посмотрим еще один пример с другого сервера.

Вход в MariaDB без пароля
Список пользователей БД

По root у Вас будет примерно такая же картина. То есть один root имеет право войти в панель phpmyadmin с паролем. Один root имеет право на вход через терминал без пароля и т. д. Пароли в БД хранятся в зашифрованном виде.

Получив данную информацию, Вы сможете разобраться с доступами, найти необходимый пароль и войти в панель phpmyadmin.

НО увы, так бывает НЕ всегда!

2 способ устранения ошибки mysql 1045

Как уже писалось в начале статьи данная ошибка возникает после обновления ПО на сервере. И зачастую в панель phpmyadmin просто НЕ попасть. Если из первого раздела Вам не удалось разобраться с пользователями и паролями, то проще всего создать нового пользователя с правами администратора и войти в панель.

Выполнить это можно через терминал. Войдите на сервер через терминал с правами администратора и проверьте есть ли доступ без пароля. Как правило на сервере создается один пользователь root со входом без пароля из терминала.  Введите команду:


sudo mysql -u root

Если на сервер баз данных попасть не удалось, то отредактируйте файл (my.cnf), как рассказано в первом способе и повторите команду:


sudo mysql -u root

Теперь, когда в БД удалось попасть через терминал, необходимо создать нового пользователя с паролем и правами админа. Команда:


CREATE USER 'root'@'localhost' IDENTIFIED BY 'ЗДЕСЬ ПАРОЛЬ';

Следующей командой предоставляются права администратора:


GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

После создания нового пользователя, как правило, можно под ним зайти в панель phpmyadmin. Это может быть совсем не обязательно пользователь root, а любой другой. Запомните имя пользователя и пароль, где то запишите себе. Лучше НЕ использовать root при создании нового пользователя.

Внимание!!! Не забудьте обратно отредактировать файл my.cnf, то есть удалить строку — skip-grant-tables.

3 способ устранения ошибки mysql 1045

Пожалуй, самый сложный способ, попытаюсь объяснить простым языком. Дело в том, что root пользователь создается по умолчанию. И если Вы начинаете играться с этим пользователем (root), то Вы нарушите пару логин — пароль. Так как пароль для этого пользователя создается и хранится в нескольких файлах на сервере.

Давайте поставим точку, рассмотрим все эти файлы и при необходимости зададим один пароль к данному юзеру.

Итак,

Файлов к счастью у нас не много, точнее три места которые необходимо проверить и поправить при необходимости.

  • Первое, открываем файл config.inc.php в Centos 7 находится /etc/phpmyadmin/config.inc.php В самый конец этого файла добавьте следующие строки кода:


/* User for advanced features */
$cfg['Servers'][$i]['controluser'] = ' root';
$cfg['Servers'][$i]['controlpass'] = 'ЗДЕСЬ ПАРОЛЬ';

  • Второе, в файле /usr/local/vesta/conf/mysql.conf. Я использую панель управления VestaCP, если у Вас другая панель, то расположение файла будет отличатся. Откройте данный файл и посмотрите какой там указан пароль, если нужно, то смените на Ваш.
  • Третье, это непосредственно сама панель управления phpmyadmin.

Во всех трех местах, должны быть одинаковые пароли от этого юзера. Если не так, то исправляйте. В VestaCP при неправильных паролях в этих файлах может отвалится бэкап.

Заключение по устранению ошибки mysql 1045

Ошибка mysqli real connect 1045, как правило появляется при неправильной паре имя — пароль или после обновления ПО на сервере. Устраняется путем проверки пользователей через терминал и создания новых пользователей. В случаи не корректного пароля от root редактируются необходимые файлы.

P. S.

Я отлавливал все 3 причины сбоя панели управления phpmyadmin и данную статью публикую больше для себя как памятку по устранению неполадок. Но надеюсь Вам она тоже поможет. Оставляйте комментарии по решению данной проблемы.

Думаю, что теперь Вам не страшна ошибка mysqli_connect(): (HY000/1045): Access denied for user ‘username’@’localhost’.

 

Учебные материалы

 

Понравился материал? Подписывайтесь на наш блог. И получите бесплатный конструктор лендингов!

Только полезная информация и реальные кейсы

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

Ваш адрес email не будет опубликован.

 для диалога необходимо принять правила кофиденциальности *

СОБСТВЕННЫЙ ПАРТНЕРСКИЙ МАГАЗИН!!!
ПОЛУЧИ БЕСПЛАТНО!!!

Оставайтесь с нами и Вы…

СОБСТВЕННЫЙ ПАРТНЕРСКИЙ МАГАЗИН

Подпишись сейчас и получи 5 уроков.

Запусти свой партнерский магазин.

Все это без знаний web программирования.

Материал дохотчиво изложен и доступен любому.

Согласие на обработку персональных данных

Пошаговая инструкция по созданию собственного партнерского магазина!

«В будущем на рынке останется два вида компаний: те, кто в Интернет и те, кто вышел из бизнеса» ~ Билл Гейтс

Получи конструктор лендингов бесплатно!

Конструктор лендингов!