ОШИБКА 1045 (28000): Доступ запрещен для пользователя 'root' @'localhost' (с использованием пароля: YES)

Я инженер-электрик, который в основном играет с энергосистемами, а не программирует. Недавно я следовал инструкции по установке пакета программ на Ubuntu. Я вообще ничего не знаю о mySQL. Я сделал следующие установки на моем Ubuntu.

sudo apt-get update
sudo apt-get install mysql-server-5.5
sudo apt-get install mysql-client-5.5
sudo apt-get install mysql-common
sudo apt-get install glade
sudo apt-get install ntp

Тогда я делаю

[email protected]:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

Я закончил со следующим сообщением об ошибке.

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

Как я могу это исправить и продолжить?

Ответ 1

Примечание. Для MySQL 5. 7+ см. Ответ @Lahiru на этот вопрос. Это содержит более актуальную информацию.

Для MySQL <5.7:

Пароль root по умолчанию пуст (то есть пустая строка), а не root. Таким образом, вы можете просто войти как:

mysql -u root

Вы, очевидно, должны изменить свой пароль root после установки

mysqladmin -u root password [newpassword]

В большинстве случаев вы должны также настроить отдельные учетные записи пользователей, прежде чем активно работать с БД.

Ответ 2

Мне удалось решить эту проблему, выполнив этот оператор

sudo dpkg-reconfigure mysql-server-5.5

Что изменит пароль root.

Ответ 3

Вы должны сбросить пароль! шаги для Mac OSX (проверено и работает) и Ubuntu

Прекратить использование MySQL

sudo service mysql stop

или же

$ sudo /usr/local/mysql/support-files/mysql.server stop

Запустите его в безопасном режиме:

$ sudo mysqld_safe --skip-grant-tables --skip-networking

(над строкой целая команда)

Это будет текущая команда до завершения процесса, поэтому откройте другое окно оболочки/терминала и войдите без пароля:

$ mysql -u root

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

Согласно комментарию @IberoMedia, для более новых версий MySQL поле называется authentication_string:

mysql> UPDATE mysql.user SET authentication_string =PASSWORD('password') WHERE User='root';

Запустите MySQL, используя:

sudo service mysql start

или же

sudo /usr/local/mysql/support-files/mysql.server start

Ваш новый пароль - "пароль".

Ответ 4

если проблема все еще существует, попробуйте принудительно изменить проход

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

Настройка нового пароля пользователя root root

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Остановить сервер MySQL:

/etc/init.d/mysql stop

Запустите сервер MySQL и протестируйте его:

mysql -u root -p

Ответ 5

При первоначальном запуске сервера происходит следующее, учитывая, что каталог данных сервера пуст:

  • Инициализируется сервер.
  • Сертификат SSL и ключевые файлы создаются в каталоге данных.
  • Плагин validate_password установлен и включен.
  • Создана учетная запись суперпользователя 'root' @'localhost'. Пароль для суперпользователя устанавливается и сохраняется в файле журнала ошибок.

Чтобы открыть его, используйте следующую команду:

shell> sudo grep 'temporary password' /var/log/mysqld.log

Измените пароль root как можно скорее, войдя с созданным временным паролем и установите пользовательский пароль для учетной записи суперпользователя:

shell> mysql -uroot -p 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 

Ответ 6

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

mysql -u root -p 

после чего он запрашивает у вас пароль

Enter password: 

а затем я ввел пароль, который я использовал. Все это

Ответ 7

Это происходит, когда ваш пароль отсутствует.

Действия, чтобы изменить пароль, если вы забыли:

  1. Остановите MySQL Server (в Linux):

    sudo systemctl stop mysql
    
  2. Запустите базу данных без загрузки таблиц грантов или включения сетей:

    sudo mysqld_safe --skip-grant-tables --skip-networking &
    

    Амперсанд в конце этой команды заставит этот процесс работать в
    фон, так что вы можете продолжать использовать свой терминал и запустить #mysql -u root, он не будет запрашивать пароль.

    Если вы получаете ошибку, как показано ниже:

    2018-02-12T08: 57: 39.826071Z mysqld_safe Каталог '/var/run/mysqld' для UNIX
    Файл сокета не существует. mysql -u root ERROR 2002 (HY000): не удается подключиться к локальному серверу MySQL через сокет
    '/var/run/mysqld/mysqld.sock' (2) [1] + Выход 1

  3. Сделать сервисный каталог MySQL.

    sudo mkdir /var/run/mysqld
    

    Дайте пользователю MySQL разрешение на запись в каталог службы.

    sudo chown mysql: /var/run/mysqld
    
  4. Выполните ту же команду на шаге 2, чтобы запустить mysql в фоновом режиме.

  5. Запустите mysql -u root, вы получите консоль mysql без ввода пароля.

    Запустите эти команды

    FLUSH PRIVILEGES;
    

    Для MySQL 5.7.6 и новее

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    

    Для MySQL 5.7.5 и старше

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
    

    Если команда ALTER USER не работает, используйте:

    UPDATE mysql.user SET authentication_string = PASSWORD('new_password')     WHERE User = 'root' AND Host = 'localhost';
    

Теперь выход

  1. Чтобы остановить экземпляр запущен вручную

    sudo kill 'cat /var/run/mysqld/mysqld.pid'
    
  2. Перезапустите MySQL

    sudo systemctl start mysql
    

Ответ 8

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


sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

Я нашел этот код в другом месте, так что я не возьму на себя ответственность за него Но это работает. Чтобы установить mysql после его удаления, я думаю, что у Digital Ocean есть хорошее руководство. Оформите мою суть для этого.
https://gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096

Ответ 9

Использую Ubuntu-16.04: установлен mysql - 5.7. У меня была та же проблема: вход в систему запрещен для пользователя root.

Попробовал следующие шаги:

  1. dpkg --get-selections | grep mysql dpkg --get-selections | grep mysql (чтобы получить версию mysql).

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

Без -p это не побуждает вас спрашивать пароль. Войдя в систему, вы можете создать пользователя с паролем, выполнив следующие действия:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

Выход из рута и логин с того, что вы дали выше.

mysql -u <your_new_username> -p

По какой-то причине все еще просто печатать mysql не работает. СОВСЕМ. Я предлагаю сделать это привычкой использовать mysql -u <name> -p.

Ответ 10

Прочтите официальную документацию: Mysql: Как Reset пароль root

Если у вас есть доступ к терминалу:

MySQL 5.7.6 и более поздние версии:

$ mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 и ранее:

$ mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

Ответ 11

  Я установил MySQL как пользователь root($SUDO) и получил эту же проблему
Вот как я это исправил it-

  1. $ sudo cat /etc/mysql/debian.cnf

Это покажет детали as-

# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock

Выше мы можем видеть пароль, просто мы собираемся использовать (GUx0RblkD3sPhHL5), который в prompt-

  1. mysql -u debian-sys-maint -p Enter password:
    Теперь введите пароль (GUx0RblkD3sPhHL5).

  2. Теперь exit из MySQL и войдите снова as-

    mysql -u root -p Enter password:
    Теперь предоставьте новый пароль. Вот и все, у нас есть новый пароль для дальнейшего использования.

Это сработало для меня, надеюсь, поможет вам тоже!

Ответ 12

Я использую mysql-5.7.12-osx10.11-x86_64.dmg в Mac OSX

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

Следуйте инструкциям

  • Перейдите к cd /usr/local/mysql/bin/
  • Введите временный пароль (который будет выглядеть примерно так: "tsO07JF1 = > 3" )
  • Вы должны получить приглашение mysql > .
  • Выполнить, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}'); Если вы хотите установить свой пароль: "root", тогда команда будет SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  • Запустить ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  • Запустить exit
  • Выполнить ./mysql -u root -p
  • Введите свой пароль. В моем случае я бы набрал "root" (без цитаты)
  • Это все.

Для удобства вы должны добавить "/usr/local/mysql/bin" в свой PATH

Теперь из любого места вы можете ввести ./mysql -u root -p и затем ввести пароль, и вы получите приглашение mysql > .

Надеюсь, это поможет.

Ответ 13

Ответ может показаться глупым, но после того, как он потратил много времени, так я получил его на работу

mysql -u root -p

Я получил сообщение об ошибке

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

Даже при том, что я вводил правильный пароль (временный пароль, который вы получаете при первой установке mysql)

Я правильно понял, когда я набрал пароль при мигании подсказки пароля

Ответ 14

если проблема все еще существует, попробуйте принудительно изменить проход

Остановить сервер MySQL (в Linux):

/etc/init.d/mysql stop

Остановить сервер MySQL (в Mac OS X):

mysql.server stop

Запустите демон mysqld_safe с помощью -skip-grant-tables

mysqld_safe --skip-grant-tables &
mysql -u root

Настройка нового пароля пользователя root root

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Остановить сервер MySQL (в Linux):

/etc/init.d/mysql stop

Остановить сервер MySQL (в Mac OS X):

mysql.server stop

Запустите службу сервера MySQL и проверьте для входа в систему root:

mysql -u root -p

Ответ 15

Это сработает, если вы вводите команды, о которых говорится в других ответах, но все равно получаете следующие ошибки:

mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+  Exit 1                  sudo mysqld_safe --skip-grant-tables

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

# Stop Your Server First
sudo service mysql stop

# Make MySQL service directory.
sudo mkdir /var/run/mysqld

# Give MySQL permission to work with the created directory
sudo chown mysql: /var/run/mysqld

# Start MySQL, without permission and network checking
sudo mysqld_safe --skip-grant-tables --skip-networking &

# Log in to your server without any password.
mysql -u root mysql


# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

#if you omit (AND Host='localhost') section, it updates the root pass regardless of its host

FLUSH PRIVILEGES;
EXIT;

#Now you can use your new password to login to your Server
mysql -u root -p

Ответ 16

просто войдите в терминал

mysql -u root -p. чем он спросит пароль для вас

Ответ 17

Только одна строка, и она решила мою проблему.

sudo dpkg-reconfigure mysql-server-5.5

Ответ 18

В Ubuntu 16.04 (версия MySQL 5.7.13) я смог решить проблему с помощью следующих шагов:

  • Следуйте инструкциям из раздела B.5.3.2.2 Сброс корневого пароля: Unix и Unix-подобные системы Справочное руководство по MySQL 5.7

  • Когда я пробовал #sudo mysqld_safe --init-file =/home/me/mysql-init, и он не удался. Ошибка была в /var/log/mysql/error.log

    2016-08-10T11: 41: 20.421946Z 0 [Примечание] Выполнено выполнение init_file '/home/me/mysql/mysql-init'. 2016-08-10T11: 41: 20.422070Z 0 [ERROR]/usr/sbin/mysqld: Файл '/home/me/mysql/mysql-init' не найден (Errcode: 13 - Permission denied) 2016-08-10T11: 41: 20.422096Z 0 [ОШИБКА] Отмена

Разрешение файла mysql-init не было проблемой, необходимо отредактировать разрешение аранжировщика

  1. Редактировать #sudo vi/etc/apparmor.d/usr.sbin.mysqld

    ....
      /var/log/mysql/ r,
      /var/log/mysql/** rw,
    
    
    # Allow user init file
      /home/pranab/mysql/* r,
    
      # Site-specific additions and overrides. See local/README for details.
      #include <local/usr.sbin.mysqld>
    }
    
  2. Перезагрузите #sudo/etc/init.d/apparmor

  3. Запустите mysqld_safe, повторите шаг 2 выше. Проверьте /var/log/mysql/error.log убедитесь, что нет ошибки, и mysqld успешно запущен.

  4. Запустите #mysql -u root -p

    Введите пароль:

Введите пароль, указанный в mysql-init. Теперь вы можете войти в систему с правами root.

  1. Завершение работы mysqld_safe с помощью #sudo mysqladmin -u root -p shutdown

  2. Запустите обычный mysqld путь #sudo systemctl запустите mysql

Ответ 19

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

подключиться к mysql

root # mysql

Использовать mysql

mysql > update user set password = PASSWORD ('root'), где User = 'root'; Наконец, перезагрузите привилегии:

mysql > привилегии flush; mysql > quit

Ответ 20

В последних версиях MySQL нет таблицы password в mysql.user.

Итак, вам нужно выполнить ALTER USER. Поместите эту одну строку в файл.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

И запустите его как файл init (как пользователь root или mysql)

mysqld_safe --init-file=/home/me/mysql-init &

Для запуска сервера mysqld_safe необходимо остановить сервер MySQL.

Кроме того, может возникнуть проблема с разрешениями apparmor для загрузки этого файла инициализации. Подробнее здесь https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql

Ответ 21

Если вы еще не установили пароль, запустите mysql -uroot, он работает для меня.

Ответ 22

На Mac, если у вас есть проблема при входе с первым паролем, который вы дали при установке, возможно, вы можете просто убить процесс mysql и затем попробовать.

Итак: 1- выполните следующую команду, чтобы найти PID mysql:

ps -aef | grep mysql | grep -v grep

2- убить процесс:

kill -15 [process id] 

Затем вы можете войти с помощью первоначального пароля с помощью этой команды:

mysql -uroot -p

Которые просят вас ввести свой пароль. Просто введите первоначальный пароль.

Ответ 23

У меня была похожая проблема:

ОШИБКА 1045 (28000): доступ запрещен для пользователя 'root' @'localhost' (используется пароль: НЕТ)

Но в моем случае причина была действительно глупой. Я скопировал команду из документа Word, и проблема заключалась в том, что у дефиса был не ASCII 2D-код, а Unicode E28093.

Неправильный способ:

mysql -u root –pxxxx

Правильно:

mysql -u root -pxxxx

Оба выглядят одинаково, но не одинаково (попробуйте, скопируйте и вставьте, заменив пароль).

Столкнувшись с этим типом ошибки, рекомендуется попробовать набрать команду вместо копирования и вставки.

Ответ 24

Я попытался с правильным ответом @Lahiru, но не работал с сервером MySQL версии 8.0.16 (Community) в MacOS Mojave.

Следуя инструкциям Sameer Choudhary, приведенным выше, и с некоторыми изменениями я смог изменить пароль root и включить root-доступ с localhost.

Обновление: все это не требуется, если вы устанавливаете на Mac OS, используя homebrew: "brew install mysql"

Ответ 25

У меня была эта проблема с Ubuntu 18.04 LTS и Mysql Server версии 5.7.27-0ubuntu0.18.04.1 (Ubuntu).

Мое решение было (работает как root с sudo -i)

mysql <<-EOSQL
  use mysql;
  update user set plugin="mysql_native_password" where User='root';
  FLUSH PRIVILEGES ;
EOSQL

mysqladmin -u root password new_pw