ОШИБКА 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
Это происходит, когда ваш пароль отсутствует.
Действия, чтобы изменить пароль, если вы забыли:
-
Остановите MySQL Server (в Linux):
sudo systemctl stop mysql
-
Запустите базу данных без загрузки таблиц грантов или включения сетей:
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
-
Сделать сервисный каталог MySQL.
sudo mkdir /var/run/mysqld
Дайте пользователю MySQL разрешение на запись в каталог службы.
sudo chown mysql: /var/run/mysqld
-
Выполните ту же команду на шаге 2, чтобы запустить mysql в фоновом режиме.
-
Запустите 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';
Теперь выход
-
Чтобы остановить экземпляр запущен вручную
sudo kill 'cat /var/run/mysqld/mysqld.pid'
-
Перезапустите 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.
Попробовал следующие шаги:
-
dpkg --get-selections | grep mysql
dpkg --get-selections | grep mysql
(чтобы получить версию mysql).
-
dpkg-reconfigure mysql-server-5.7
-
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-
$ 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-
mysql -u debian-sys-maint -p
Enter password:
Теперь введите пароль (GUx0RblkD3sPhHL5).
Теперь 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 не было проблемой, необходимо отредактировать разрешение аранжировщика
-
Редактировать #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>
}
-
Перезагрузите #sudo/etc/init.d/apparmor
-
Запустите mysqld_safe, повторите шаг 2 выше. Проверьте /var/log/mysql/error.log убедитесь, что нет ошибки, и mysqld успешно запущен.
-
Запустите #mysql -u root -p
Введите пароль:
Введите пароль, указанный в mysql-init. Теперь вы можете войти в систему с правами root.
-
Завершение работы mysqld_safe с помощью #sudo mysqladmin -u root -p shutdown
-
Запустите обычный 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