it-swarm.com.ru

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

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

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

129
Sibbs Gambling

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

Для MySQL <5.7:

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

mysql -u root

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

mysqladmin -u root password [newpassword]

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

119
Mike Brant

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

Sudo dpkg-reconfigure mysql-server-5.5

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

111
Divz

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

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

57
tk_

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

/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
28
Yasin Hassanien

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

  • Сервер инициализирован.
  • Сертификат 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!'; 
19
Lahiru

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

mysql -u root -p 

после чего он просит вас передать слово, как это

Enter password: 

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

16
XY-JOE

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

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

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

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

    Sudo mysqld_safe --skip-grant-tables --skip-networking &
    

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

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

    2018-02-12T08: 57: 39.826071Z mysqld_safe Каталог '/ var/run/mysqld' для UNIX
    Файл сокета не существует . mysql -u root ОШИБКА 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
    
15
Sameer Choudhary

Я использую 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 не работает. AT ВСЕ. Я предлагаю сделать это привычкой использовать mysql -u <name> -p.

10
Nikhil Rushmith

Я столкнулся с этой очень раздражающей проблемой и нашел много ответов, которые не работали. Лучшее решение, с которым я столкнулся, было полностью удалить 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 имеет хороший учебник по нему. Оформите мой Gist для этого .
https://Gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096

6
JamesD

Пожалуйста, ознакомьтесь с официальной документацией: 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');
5
d.danailov

Я использую 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" к вашему PATH

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

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

3
tausiq

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

mysql -u root -p

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

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

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

Я понял это правильно, когда я набрал пароль, когда приглашение пароля мигало

3
Amit Kumar

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

Остановите 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

Установите новый пароль пользователя 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 и протестируйте вход в систему с правами root:

mysql -u root -p
2
Max Yao

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

Sudo dpkg-reconfigure mysql-server-5.5
1
Satyendra Sahani

В 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. Запустите mysql.

1
codegen

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

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 -uroot 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 -uroot -p
1
Mehdi

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

0
ahbon

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

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

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

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

mysql -u root –pxxxx

Правильно:

mysql -u root -pxxxx

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

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

0
cesargastonec

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

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

ps -aef | grep mysql | grep -v grep

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

kill -15 [process id] 

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

mysql -uroot -p

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

0
Maryam Zakani

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

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

root # mysql

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

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

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

0
Rizwan Basheer

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

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

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

0
cspider

В последних версиях 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
Vladimir Kovalchuk