ПОМИЛКА 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)

Як я можу це виправити та продовжити?


1
Це, здається, не є суворо програмовим . Я позначив його для міграції на SuperUser
Улі Келер

Майбутні відвідувачі також не забудьте перевірити кілька пояснених тут причин: dev.mysql.com/doc/refman/8.0/uk/problems-connecting.html
aderchox

Відповіді:


155

Примітка. Для MySQL 5.7+ ви знайдете відповідь від @Lahiru на це запитання. Це містить більш актуальну інформацію.

Для MySQL <5,7:

Корольовий пароль за замовчуванням порожній (тобто порожній рядок) не root. Тож ви можете просто увійти як:

mysql -u root

Ви, очевидно, повинні змінити свій кореневий пароль після встановлення

mysqladmin -u root password [newpassword]

У більшості випадків слід також налаштувати окремі облікові записи користувачів, перш ніж також широко працювати з БД.


5
@FarticlePilter -pПрапор вказує пароль, тому після зміни кореневого пароля ви б хотіли 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)'. Дуже дякую!
Сіббс Азартні ігри

2
@Kanagaroo в цьому запитанні ОП заявляє, що вони вперше встановили MySQL, а потім спробували отримати доступ через клієнтського командного рядка MySQL. Це звучить як перший доступ до мене.
Майк Брант

18
Насправді для сервера спільноти mysql 5.7, пароль root за замовчуванням генерується випадковим чином при встановленні. Перевірте у /var/log/mysqld.log рядок про "тимчасовий пароль". Економить години возитися.
Філ

1
@BraianMellor Це вирішує проблему для MySQL <5.7 тим, що за замовчуванням (після встановлення) кореневий пароль на Ubuntu порожній (без пароля), де в оригінальному запитанні плакат намагався використовувати root / root. Питання полягало не в втраченому паролі, зміні пароля тощо. Для нових версій MySQL інша відповідь, на яку я посилався, є правильною, оскільки користувач повинен заглянути в журнали помилок, щоб побачити випадково генерований кореневий пароль.
Майк Брант

114

Мені вдалося вирішити цю проблему, виконавши цю заяву

sudo dpkg-reconfigure mysql-server-5.5

Який змінить кореневий пароль.


10
Тільки те, що мені було потрібно ... але не у всіх є версія 5.5 сервера. використовуйте, dpkg --get-selections | grep sqlщоб отримати свою версію
Balmipour

1
@Balmipour, що має бути еквівалентною командою для перевірки sql-версії в Rhel 6.x
PrathamN

1
@Divz, якою має бути команда перенастроювати mysql-сервер у Rhel / centos
PrathamN,

@PrathamN Я ніколи не використовував червоний колір, але googling для "червоних капелюшних версій пакетів пакетів" дає мені такі команди, як ця: yum list installedдодавати | grep sqlдля фільтрації лише пакети SQL.
Бальміпур

1
Коли я запускаю цю команду в Mac OS X, я отримую цю помилку: sudo: dpkg-reconfigure: command not found. Будь-яка пропозиція?
mOna

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

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


3
Будь ласка, НЕ так! @ Відповідь Дівза є більш безпечною. Цитуючи документ про --skip-grant-table: Це дозволяє будь-кому підключитися без пароля та з усіма привілеями [...] Оскільки це небезпечно, [...] використовуйте --skip-grant-tablesспільно з тим, --skip-networkingщоб запобігти підключенню віддалених клієнтів. о, і також, цей не працював для мене. Ось чому я прийшов сюди: p
Бальміпур

1
Якщо ви підете цим шляхом , так. Мені це не спрацювало, і після відповіді @ Divz мені здається набагато легшим. У будь-якому разі, --що я б запропонував, це використовувати dpkg --get-selections | grep mysql-server-для отримання вашої точної версії MySQL, тоді перейдіть до sudo dpkg-перенастроювання mysql-server-5.x (замініть 5 .x з вашою версією сервера, btw). Я прокоментував відповідь @ Divz з такою точністю, але це замасковано кількома коментарями "спасибі".
Бальміпур

4
оновити встановлений користувачем аутентифікацію_string = пароль ('1111'), де user = 'root';
Dejell

2
Це насправді спрацювало ... інші рішення все-таки дали мені таку ж помилку.
eddy147

2
Оскільки MySQL 5.7.6 стовпець Пароль був перейменований на "authentication_string", тут ви можете прочитати більше про нього: bugs.mysql.com/bug.php?id=76655
IberoMedia

55

Я знаю це старе питання, але я думаю, що це може допомогти комусь. Я нещодавно зіткнувся з тією ж проблемою, але в моєму випадку я пам’ятаю свій пароль досить добре, але він продовжував давати мені ту саму помилку. Я спробував так багато рішень, але все одно жодне не допомогло, тоді я спробував це

mysql -u root -p 

після чого він просить вас пропустити таке слово

Enter password: 

а потім я набрав пароль, який я використав. Це все


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

Якнайшвидше змінити кореневий пароль, увійшовши в систему за допомогою створеного тимчасового пароля та встановивши спеціальний пароль для облікового запису суперпользователя:

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

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

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 працювало на мене.
артемізіан

17
Я спробував sudo grep 'тимчасовий пароль' /var/log/mysql/error.log, але він нічого не повертає.
учень

2
Спробуйте shell> sudo grep 'password' /var/log/mysql/error.log. Для мене працювали, але я отримую: root @ localhost створюється з порожнім паролем! Подумайте про вимкнення опції - ініціалізувати незахищеність. Моя версія mysql: Версія 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

Встановіть новий пароль користувача MySQL root

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.
Маркос

Будь ласка, НЕ так! @ Відповідь Дівза є більш безпечною. Цитуючи документ про --skip-grant-table: Це дозволяє будь-кому підключитися без пароля та з усіма привілеями [...] Оскільки це небезпечно, [...] використовуйте --skip-grant-tablesразом із тим, --skip-networkingщоб запобігти підключенню віддалених клієнтів. о, і також, цей не працював для мене. Ось чому я прийшов сюди: p
Бальміпур

2
Це дає мені: ПОМИЛКА 1054 (42S22): невідомий стовпець 'пароль' у «списку полів»
MD. Мохюддін Ахмед

Перевірте відповідь від @Anshu, що це більш безпечний спосіб вирішення цього питання
Mugoma J. Okomba

1
@ MD.MohiuddinAhmed Ви повинні використовувати новішу версію mysql-сервера. Див цей відповідь: stackoverflow.com/a/31122246/6242649
Udayraj Дешмук

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. Щоб змінити використання пароля -> оновіть набір користувачів.
Бікрам

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 та перевстановити його. Після повторної інсталяції ви встановили кореневий пароль, і це вирішило проблему.


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 після його видалення, я думаю, що цифровий океан має гарний підручник по ньому. Отримайте мою суть за це.
https://gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096


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

Якщо жоден з інших відповідей не працює для вас, і ви отримали цю помилку:

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
Mehdi

7

Я встановив MySQL як root user ( $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:
    Тепер введіть новий пароль. Ось і все, у нас новий пароль для подальшого використання.

Це працювало на мене, сподіваюся, допоможе і вам!


6

Будь ласка, прочитайте офіційну документацію: Mysql: Як скинути кореневий пароль

Якщо у вас є доступ до терміналу:

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');

1
Дає: ПОМИЛКА 1131 (42000): Ви використовуєте MySQL як анонімний користувач, а анонімним користувачам заборонено змінювати паролі
MD. Мохіуддін Ахмед

1
Це нормально. Ваш користувач анонімний. Вам потрібно виконати> mysql -u {your_username}
d.danailov

3

Я використовую mysql-5.7.12-osx10.11-x86_64.dmg в Mac OSX

Процес установки автоматично встановлює тимчасовий пароль для користувача root. Вам слід зберегти пароль. Неможливо відновити пароль.

Дотримуйтесь інструкції

  1. Йти до cd /usr/local/mysql/bin/
  2. Введіть тимчасовий пароль (який виглядатиме приблизно так: "tsO07JF1 => 3")
  3. Ви повинні отримати mysql> prompt.
  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> prompt.

Сподіваюся, це допомагає.


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-table

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

Встановіть новий пароль користувача MySQL root

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 сервера та тестуйте для входу через корінь:

mysql -u root -p

1

За замовчуванням пароль буде нульовим, тому вам доведеться змінити пароль, виконавши наведені нижче дії.

підключити до mysql

корінь # mysql

Використовуйте mysql

mysql> оновити встановлений користувачем пароль = PASSWORD ('root'), де User = 'root'; Нарешті, перезавантажте привілеї:

mysql> flush privileges; mysql> кинути



1

У Ubuntu 16.04 (MySQL версія 5.7.13) я зміг вирішити проблему, виконавши наступні кроки:

  1. Дотримуйтесь вказівок у розділі B.5.3.2.2 Скидання пароля Root: Unix та Unix-Like Systems Довідкове керівництво 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 вимкнення

  2. Почніть mysqld нормальним способом #sudo systemctl start mysql


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

0

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

Значить, потрібно виконати ALTER USER. Помістіть цю команду з одним рядком у файл.

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

І виконати його як файл init (як користувач root або mysql)

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

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

Також може виникнути проблема з дозволами apparmor для завантаження цього файлу init. Детальніше читайте тут https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql


0

Якщо ви ще не встановили пароль, тоді запустіть mysql -uroot, це працює для мене.


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, і проблема полягала в тому, що дефіс мав не код 2D ASCII, а Unicode E28093.

Неправильний шлях:

mysql -u root pxxxx

Правильний шлях:

mysql -u root -pxxxx

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

Зіткнувшись з таким типом помилок, рекомендується спробувати ввести команду замість копіювання та вставлення.


0

Я намагався з правильною відповіддю від @Lahiru, але не працював із сервером MySQL версії 8.0.16 (спільнота) на macOS Mojave.

Виконуючи вказівки Самера Чудхарі вище та з деякими коригуваннями, я зміг змінити кореневий пароль та включити кореневий доступ з localhost.

Оновлення: все це не потрібно, якщо ви встановлюєте на Mac OS за допомогою homebrew: "варити встановити mysql"


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';

яка працює.


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'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.