Что такое корневой пароль по умолчанию для MySQL 5.7

Не удается войти в базу данных MySQL после новой установки с идентификатором root и пустым / без пароля, как и другие старые версии MySQL

8 ответов


после того, как вы установили MySQL-community-server 5.7 из fresh на linux, вам нужно будет найти временный пароль от /var/log/mysqld.войдите в систему как root.

  1. grep 'temporary password' /var/log/mysqld.log
  2. Run mysql_secure_installation изменить новый пароль

ref:http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html


есть так много ответов, говорящих о переустановке mysql или использовании некоторого комбо

mysqld_safe --skip-grant-tables

и / или

UPDATE mysql.user SET Password=PASSWORD('password')

и / или что-то другое ...

... Ничто из этого не работало на меня


вот что сработало для меня, на Ubuntu 18.04, сверху

С особым кредитом на ответ для выкапывания меня из разочарования на этом ...

$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf

обратите внимание на строки, которые гласят:

user     = debian-sys-maint
password = blahblahblah

затем:

$ mysql -u debian-sys-maint -p
Enter password: // type 'blahblahblah', ie. password from debian.cnf

mysql> USE mysql
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
mysql> FLUSH PRIVILEGES;
mysql> COMMIT;  // When you don't have auto-commit switched on in your CLI
mysql> EXIT

$ sudo service mysql restart
$ mysql -u root -p
Enter password: // Yay! 'new_password' now works!

Если вы хотите установить mysql или percona без присмотра (как в моем случае ansible), вы можете использовать следующий скрипт:

# first part opens mysql log
# second part greps lines with temporary password
# third part picks last line (most recent one)
# last part removes all the line except the password
# the result goes into password variable

password=$(cat /var/log/mysqld.log | grep "A temporary password is generated for" | tail -1 | sed -n 's/.*root@localhost: //p')

# setting new password, you can use  and run this script as a file and pass the argument through the script

newPassword="wh@teverYouLikE"

# resetting temporary password

mysql -uroot -p$password -Bse "ALTER USER 'root'@'localhost' IDENTIFIED BY '$newPassword';"

Я только что установил Linux Mint 19 (на основе Ubuntu 18.04) на своей машине. Я установил MySQL 5.7 из РЕПО (sudo apt установить mysql-server) и удивительно во время установки, Установка не запрашивала ввод root пароль. В результате я не смог войти в MySQL. Я гуглил здесь и там и пробовал различные ответы, которые я нашел в сети, включая принятый ответ выше. Я удалил (очистка всех dpkgs с помощью в MySQL в его названии) и переустановлен снова из репозиториев Linux Mint по умолчанию. Ничего не работает.

после нескольких часов непродуктивных работ я решил переустановить MySQL с официальной страницы. Я открыл страницу загрузки MySQL (https://dev.mysql.com/downloads/repo/apt) для apt РЕПО и нажал скачать внизу справа.

затем запустите его с помощью dpkg:

sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb

в настройки установки, выберите версию MySQL, которую вы хотите установить. Опция по умолчанию-8.0, но я изменил ее на 5.7. Нажмите OK, чтобы выйти. После этого у вас есть новое РЕПО MySQL в ваших источниках программного обеспечения.

обновить РЕПО:

sudo apt update

наконец, установите MySQL:

sudo apt install mysql-server

и теперь мне было предложено указать root пароль! Надеюсь, это поможет другим с таким же опытом.


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

drop user admin@localhost; flush privileges; create user admin@localhost identified by 'admins_password'

Это позволило мне воссоздать мою имя пользователя и введите пароль имя пользователя


в моем случае каталог данных был автоматически инициализирован с помощью . Так что /var/log/mysql/error.log не содержит временного пароля, но:

[предупреждение] root@localhost создается с пустым паролем ! Пожалуйста рассмотрите возможность отключения опции -- initialize-insecure.

что сработало:

shell> mysql -u root --skip-password
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

детали: MySQL 5.7 справочное руководство > 2.10.4 обеспечение начальной учетной записи MySQL


ни один из этих ответов не работал для меня на Ubuntu Server 18.04.1 и MySQL 5.7.23. Я потратил кучу времени, пытаясь установить пароль и плагин auth вручную, найти пароль в журналах (его там нет) и т. д.

решение на самом деле очень легко:

sudo mysql_secure_installation

это действительно важно, чтобы сделать это с sudo. Если вы попытаетесь без повышения, вам будет предложено ввести пароль root, которого у вас, очевидно, нет.


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

sudo mysql -u root

затем создайте обычного пользователя, установите пароль, а затем используйте этого пользователя для работы.

create user 'user'@'localhost' identified by 'user1234';
grant all on your_database.* to 'user'@'localhost';
select host, user from mysql.user;

затем попробуйте получить доступ:

mysql -u user -p

- бум!