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

184

Я инженер-электрик, который в основном играет с энергосистемами, а не программирует. Недавно я следовал инструкции по установке пакета программ на 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

Тогда я делаю

me@ubuntu:~/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)

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

Sibbs Gambling
источник
1
Это не похоже на программирование, связанное со мной. Я пометил его для миграции в SuperUser
Uli Köhler
Будущие посетители, также не забудьте проверить несколько причин, объясненных здесь: dev.mysql.com/doc/refman/8.0/en/problems-connecting.html
aderchox

Ответы:

155

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

Для MySQL <5.7:

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

mysql -u root

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

mysqladmin -u root password [newpassword]

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

Майк Брант
источник
5
@FarticlePilter -pФлаг указывает пароль, поэтому после изменения пароля пользователя root вы захотите mysql -u root -p[newpassword]. < [filename]Используем зЬй вход для выполнения файла SQL на пути , указанный с помощью учетных данных пользователя вы предоставляете.
Майк Брант
27
Я попробовал как сказано mysqladmin -u root password abc1234, но я получил mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'. Спасибо вам большое!
Sibbs Gambling
2
@Kanagaroo в этом вопросе OP утверждает, что они только что установили MySQL в первый раз, а затем попытались получить доступ через клиент командной строки MySQL. Это похоже на первый доступ ко мне.
Майк Брант
18
На самом деле для сервера сообщества mysql 5.7 пароль root по умолчанию генерируется случайным образом при установке. Проверьте в /var/log/mysqld.log строку, в которой говорится о «временном пароле». Экономит часы возни.
Фил
1
@BraianMellor Это решает проблему для MySQL <5.7 в том смысле, что пароль пользователя по умолчанию (после установки) в Ubuntu пуст (пароль отсутствует), где в исходном вопросе постер пытался использовать root / root. Вопрос был не о потерянном пароле, смене пароля или подобном. Для более новых версий MySQL другой ответ, на который я ссылался, является правильным, поскольку пользователь должен посмотреть в журналах ошибок, чтобы увидеть случайно сгенерированный пароль root.
Майк Брант
114

Я смог решить эту проблему, выполнив это заявление

sudo dpkg-reconfigure mysql-server-5.5

Который изменит пароль root.

Divz
источник
10
Как раз то, что мне нужно ... но не у всех есть версия 5.5 сервера. используйте, dpkg --get-selections | grep sqlчтобы получить свою версию
Balmipour
1
@Balmipour какая должна быть эквивалентная команда для проверки версии sql в Rhel 6.x
PrathamN
1
@Divz какая должна быть команда для перенастройки сервера mysql в Rhel / centos
PrathamN
@PrathamN Я никогда не использовал red имел, но поиск в Google для «версий пакетов проверки Red Hat» дает мне такие команды: yum list installedдобавить | grep sqlдля фильтрации только пакеты SQL.
Balmipour
1
Когда я запускаю эту команду в Mac OS X, я получаю эту ошибку: sudo: dpkg-reconfigure: command not found. Любое предложение?
Мина
90

Вы должны сбросить пароль! шаги для 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

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

tk_
источник
3
Пожалуйста, НЕ так! Ответ @ Divz является более безопасным. Цитирование документа о --skip-grant-tables: Это позволяет любому подключаться без пароля и со всеми привилегиями [...]. Поскольку это небезопасно, [...] используйте --skip-grant-tablesв сочетании с, --skip-networkingчтобы предотвратить подключение удаленных клиентов. о, а также, этот не работал для меня. Вот почему я пришел сюда: р
Balmipour
1
Если вы идете по этому пути , да. Это не сработало для меня, и, следуя ответу @ Divz, мне кажется, что это намного проще, во всяком случае, --я бы посоветовал использовать dpkg --get-selections | grep mysql-server-для получения вашей точной версии MySQL, а затем перейти к sudo dpkg -configure mysql-server-5.x (заменить 5 .x с версией вашего сервера, кстати). Я прокомментировал ответ @ Divz с такой точностью, но он замаскирован несколькими комментариями «спасибо».
Balmipour
4
обновить пользовательский набор authentication_string = пароль ('1111'), где user = 'root';
Dejell
2
Это на самом деле сработало ... другие решения все еще дали мне ту же ошибку.
eddy147
2
Начиная с MySQL 5.7.6, столбец Password был переименован в «authentication_string». Здесь вы можете узнать больше об этом: bugs.mysql.com/bug.php?id=76655
IberoMedia
56

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

mysql -u root -p 

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

Enter password: 

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

XY-JOE
источник
3
Забавно, что это помогло после нескольких дней исследований.
girish_vr
Приятно знать @girish_vr
XY-JOE
Работал на меня! Моя версия MySQL-сервера: Версия сервера: 8.0.13 MySQL Community Server - GPL
kaspiotr
Это помогло, что настолько невероятно глупо для MySQL, что я до сих пор не могу в это поверить.
wscourge
39

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

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

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

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

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

shell> mysql -u root -p #Login to root user with some password

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 
Lahiru
источник
16
Это выглядело многообещающе, но это не работает для меня. Когда я бегу, sudo grep 'temporary password' /var/log/mysqld.logя получаю/var/log/mysqld.log: No such file or directory
Эрик Хепперл - CodeSlayer2010
4
Попробуй sudo grep 'temporary password' /var/log/mysql/error.log. Решение @Lahiru сработало для меня.
artemisian
17
Я попытался sudo grep «временный пароль» /var/log/mysql/error.log, но он ничего не возвращает.
ученик
2
Попробуй shell> sudo grep 'password' /var/log/mysql/error.log. У меня сработало , но я получаю: root @ localhost создан с пустым паролем! Пожалуйста, рассмотрите возможность отключения опции --initialize-insecure. Моя версия mysql: Ver 8.0.13 для Linux на x86_64 (MySQL Community Server - GPL)
kaspiotr
1
@EnginYilmaz, почему вы предлагаете команду mysql, если проблема в том, что mysql даже недоступен?
R-obert
34

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

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

Установите новый пароль пользователя root для MySQL

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

Остановите MySQL Server:

/etc/init.d/mysql stop

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

mysql -u root -p
Ясин Хассаниен
источник
1
Спасибо. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)также мучил мой сервер. «mysqld_safe» также не выполнялся, пока я не сделал «killall mysqld» ПОСЛЕ вашего шага 1.
Маркос
Пожалуйста, НЕ так! Ответ @ Divz является более безопасным. Цитирование документа о --skip-grant-tables: Это позволяет любому подключаться без пароля и со всеми привилегиями [...] Поскольку это небезопасно, [...] используйте --skip-grant-tablesв сочетании с, --skip-networkingчтобы предотвратить подключение удаленных клиентов. о, а также, этот не работал для меня. Вот почему я пришел сюда: р
Balmipour
2
Это дает мне: ОШИБКА 1054 (42S22): неизвестный столбец «пароль» в «списке полей»
MD. Мохиуддин Ахмед
Проверьте ответ @Anshu, это более безопасный способ справиться с этим
Мугома Дж. Окомба
1
@ MD.MohiuddinAhmed Вы должны использовать более новую версию mysql-сервера. См. Этот ответ: stackoverflow.com/a/31122246/6242649
Udayraj Deshmukh
32

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

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

  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
Самир Кумар Чоудхари
источник
2
В моем случае я должен изменить Шаг 6 какsudo kill `sudo cat /var/run/mysqld/mysqld.pid`
kolunar
1
Это тот, который работал для меня. На шаге 5 выполните 1. используйте USER 2. Чтобы изменить пароль, используйте -> update user set authentication_string = PASSWORD ("password"), где User = 'root';
Бикрам
1
Это лучшее решение, я мог бы узнать. Использование «5.7.26 MySQL Community Server (GPL)» в MacOS Mojave на модели MBP '15. Мне пришлось остановить Mysql из System Preference, а затем выполнить шаг 2 и шаг 5. А потом мне пришлось убить процесс MySQL, просмотрев PID с помощью ps -ef | grep mysql.
cspider
12

Я столкнулся с этой очень раздражающей проблемой и нашел много ответов, которые не работали. Лучшее решение, с которым я столкнулся, было полностью удалить 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

JamesD
источник
12

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

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

  1. 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.

Никхил Рушмит
источник
8

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

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

Вахап Генчдал
источник
8

Если ни один из других ответов не работает для вас, и вы получили эту ошибку:

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;

#kill mysqld_safe process
sudo service mysql restart

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

#take note for remote access you should create a remote user and then grant all privileges to that remote user
Мехди
источник
Это правильный ответ для mysql 5.7 в Ubuntu 18.04 LTS. Спасибо
Dhiraj
Для всех удаленных адресов: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf -> bind-address = 0.0.0.0
Мехди
7

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

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

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

# 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) в командной строке.

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

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

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

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

S.Yadav
источник
6

Пожалуйста, ознакомьтесь с официальной документацией: Mysql: Как сбросить пароль 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');
d.danailov
источник
1
Дает: ОШИБКА 1131 (42000): Вы используете MySQL в качестве анонимного пользователя, и анонимным пользователям не разрешается менять пароли
MD. Мохиуддин Ахмед
1
Это нормально. Ваш пользователь анонимный. Вам нужно выполнить> mysql -u {your_username}
д.данаилов
3

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

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

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

  1. Перейти к cd /usr/local/mysql/bin/
  2. Введите временный пароль (который будет выглядеть примерно так: «tsO07JF1 => 3»)
  3. Вы должны получить приглашение mysql>.
  4. Выполнить, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}');если вы хотите установить свой пароль: «root», то команда будет,SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  5. Бегать ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  6. Бегать exit
  7. Бегать ./mysql -u root -p
  8. Введите свой пароль. В моем случае я бы набрал «root» (без кавычек)
  9. Вот и все.

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

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

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

tausiq
источник
3

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

mysql -u root -p

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

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

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

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

Амит Кумар
источник
2

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

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

/etc/init.d/mysql stop

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

mysql.server stop

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

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

Установите новый пароль пользователя root для MySQL

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

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

/etc/init.d/mysql stop

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

mysql.server stop

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

mysql -u root -p
Макс Яо
источник
1

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

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

root # mysql

Используйте MySQL

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

mysql> сброс привилегий; mysql> выход

Ризван Башир
источник
1

Всего одна строчка и это решило мою проблему.

sudo dpkg-reconfigure mysql-server-5.5
Сатьендра Сахани
источник
1

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

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

  2. Когда я попробовал #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 [ОШИБКА] / usr / sbin / mysqld: файл '/ home / me / mysql / mysql-init' не найден (код ошибки: 13 - разрешение отклонено) 2016-08-10T11: 41: 20.422096Z 0 [ОШИБКА] Отмена

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

  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.

Codegen
источник
1

Если у вас есть MySQL как часть образа Docker (скажем, на порту 6606) и установки Ubuntu (на порту 3306), указать порт недостаточно:

mysql -u root -p -P 6606

скину

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

поскольку он пытается подключиться к localhost по умолчанию, указание локального IP-адреса устраняет проблему:

mysql -u root -p -P 6606 -h 127.0.0.1
botris
источник
0

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

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

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

И выполнить его как файл инициализации (как пользователь root или mysql)

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

MySQL сервер должен быть остановлен для запуска mysqld_safe.

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

Владимир Ковальчук
источник
0

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

ahbon
источник
0

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

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

ps -aef | grep mysql | grep -v grep

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

kill -15 [process id] 

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

mysql -uroot -p

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

Марьям Закани
источник
0

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

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

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

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

mysql -u root pxxxx

Правильно:

mysql -u root -pxxxx

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

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

cesargastonec
источник
0

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

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

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

cspider
источник
0

У меня была эта проблема с 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
Фрэнк Хинч
источник
0

Я также столкнулся с той же проблемой, что я сделал,

1) Откройте ваш cmd

2) Перейдите в C: \ Program Files \ MySQL \ MySQL Server 8.0 \ bin> (где MySQL Server 8.0 может отличаться в зависимости от установленного сервера)

3) Затем введите следующую команду: mysql -u root -p

4) Я буду запрашивать пароль ... просто нажмите Enter, так как иногда пароль, который вы вводили при установке, заменяется пустым.

теперь вы можете просто получить доступ к базе данных

Это решение работало для меня на платформе Windows

Аман-Д
источник
0

Хотя верхний ответ (w / mysqladmin) работал на Mac 10.15, он не работал на Ubuntu. Затем попробовал многие другие опции, включая безопасный запуск для mysql, но ни одна из них не сработала. Таким образом добавив новый ответ.

По крайней мере, для версии, которую я получил, 5.7.28-0ubuntu0.18.04.4ответов не хватало IDENTIFIED WITH mysql_native_password. 5.7.28 является значением по умолчанию для текущей LTS и, следовательно, должно быть значением по умолчанию для большинства новых новых систем (до 20.04 LTS выходит).

Найдено: https://www.digitalocean.com/community/questions/can-t-set-root-password-mysql-server и теперь применяется

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';

который работает.

arntg
источник
0

Ошибка, с которой я столкнулся, была

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

это была проблема с работающим портом.

По умолчанию MySQL работает port 3306.

Вы можете проверить это, запустив

  • в 32-битной системе:

    sudo /opt/lampp/manager-linux.run

  • в 64-битной системе:

    sudo /opt/lampp/manager-linux-x64.run

и нажмите на configureкнопку

панель управления xampp

В моем случае порт работал на 3307, и команда, которую я использовал, была

mysql -u root -p -P 3307 -h 127.0.0.1
Рочана Патираджа
источник
0

В моем случае я пытался передать команда к контейнеру. В этом случае только первое слово было интерпретировано. Убедитесь, что вы не работаете:

mysql

в отличие от:

mysql -uroot -ppassword schemaname

возможно попробуйте процитировать:

'mysql -uroot -ppassword schemaname'
Nae
источник