Невозможно войти в базу данных MySQL после новой установки с идентификатором root и пустым/нет пароля, как и другие старые версии MySQL.
Что такое пароль pasword по умолчанию для MySQL 5.7
Ответ 1
После того, как вы установили MySQL-community-server 5.7 из свежих в linux, вам нужно будет найти временный пароль из /var/log/mysqld.log для входа в систему с правами администратора.
-
grep 'temporary password' /var/log/mysqld.log
- Запустите
mysql_secure_installation
, чтобы изменить новый пароль
ref: http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
Ответ 2
Там так много ответов там говорят, чтобы переустановить 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> COMMIT; // When you don't have auto-commit switched on
Или:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Или же:
// For MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
Затем:
mysql> FLUSH PRIVILEGES;
mysql> COMMIT; // When you don't have auto-commit switched on
mysql> EXIT
$ sudo service mysql restart
$ mysql -u root -p
Enter password: // Yay! 'new_password' now works!
Ответ 3
MySQL 5.7 изменил модель безопасности: теперь для входа в MySQL требуется sudo
Простейшим (и самым безопасным) решением будет создание нового пользователя и предоставление необходимых привилегий.
1. Подключитесь к mysql
sudo mysql --user=root mysql
2. Создайте пользователя для phpMyAdmin
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Ссылка - https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7
Ответ 4
Если вы хотите установить mysql или percona без присмотра (например, в моем случае невозможно), вы можете использовать следующие script:
# 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/.*[email protected]: //p')
# setting new password, you can use $1 and run this script as a file and pass the argument through the script
newPassword="[email protected]"
# resetting temporary password
mysql -uroot -p$password -Bse "ALTER USER 'root'@'localhost' IDENTIFIED BY '$newPassword';"
Ответ 5
Mysql генерирует временный пароль по умолчанию после новой установки. Чтобы сначала использовать mysql, вам потребуется получить этот пароль из файла журнала, который присутствует на /var/log/mysqld.log
. Поэтому выполните следующий процесс:
# grep 'temporary password' /var/log/mysqld.log
# mysql_secure_installation
Вторая команда требуется для изменения пароля для mysql, а также для внесения некоторых других изменений, таких как удаление временных баз данных, разрешение или запрет удаленного доступа для пользователя root, удаление анонимных пользователей и т.д.
Ответ 6
Сервер MySQL 5.7 уже был установлен по умолчанию на моем новом Linux Mint 19.
Но какой пароль у MySQL root
? Оказывается, что:
Установка по умолчанию использует auth_socket
для аутентификации вместо паролей!
Это позволяет входить без пароля при условии, что вы вошли в систему Linux с тем же именем пользователя. Чтобы войти в систему как root MySQL user
, можно использовать sudo:
sudo mysql --user=root
Но как потом сменить пароль root? Чтобы проиллюстрировать происходящее, я создал нового пользователя "я" с полными правами:
mysql> CREATE USER 'me'@'localhost' IDENTIFIED BY 'my_new_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'me'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
Сравнение "я" с "корнем":
mysql> SELECT user, plugin, HEX(authentication_string) FROM mysql.user WHERE user = 'me' or user = 'root';
+------+-----------------------+----------------------------------------------------------------------------+
| user | plugin | HEX(authentication_string) |
+------+-----------------------+----------------------------------------------------------------------------+
| root | auth_socket | |
| me | mysql_native_password | 2A393846353030304545453239394634323734333139354241344642413245373537313... |
+------+-----------------------+----------------------------------------------------------------------------+
Поскольку он использует auth_socket, пароль root не может быть изменен: команда SET PASSWORD
завершается неудачно, а mysql_secure_installation
ничего не достигает...
==> Чтобы закрыть этот альтернативный режим аутентификации и вернуть пользователю MySQL root
пароли:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SOME_NEW_ROOT_PASSWORD';
Ответ 7
Я только что установил Linux Mint 19 (основанный на Ubuntu 18.04) на моей машине. Я установил MySQL 5.7 из репо (sudo apt install mysql-server) и, что удивительно, во время установки установка не запрашивала пароль root. В результате я не смог войти в MySQL. Я искал кое-где и искал различные ответы, которые я нашел в сети, включая принятый ответ выше. Я удалил (очистил все dpkgs с помощью mysql в своем имени) и снова установил его из репозиториев Linux Mint по умолчанию. NONE работает.
После нескольких часов непроизводительных работ я решил переустановить MySQL с официальной страницы. Я открыл страницу загрузки MySQL (https://dev.mysql.com/downloads/repo/apt) для apt repo и нажал кнопку " Загрузить" внизу справа.
Затем запустите его с помощью 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! Надеюсь, это поможет другим людям с таким же опытом.
Ответ 8
Ни один из этих ответов не работал для меня на сервере Ubuntu 18.04.1 и MySQL 5.7.23. Я потратил кучу времени, пытаясь и не сумев установить пароль и плагин auth вручную, найти пароль в журналах (его нет) и т.д.
Решение на самом деле очень просто:
sudo mysql_secure_installation
Очень важно сделать это с помощью sudo
. Если вы попытаетесь без повышения, вам будет предложено ввести пароль root, которого вы, очевидно, не имеете.
Ответ 9
Кажется, что все было сделано для того, чтобы разработчики не могли использовать пользователя 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
Boom!
Ответ 10
После долгих попыток я могу сбросить пароль по умолчанию с помощью следующих команд (Ubuntu и производные):
sudo -i
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -uroot
use mysql;
update user set authentication_string=password('YOURPASSWORD') where user='root';
update user set plugin="mysql_native_password" where User='root';
flush privileges;
quit;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
Иногда даже после ввода в терминале
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
Я получил ошибку, что mysqld не существует. Итак, выйдите и снова введите те же команды.
И последняя команда
sudo /etc/init.d/mysql start
Иногда не работает. Только после перезагрузки компьютера.
Ответ 11
У меня была одна и та же проблема, и единственное, что я смог сделать, чтобы заставить ее работать, - это пойти по этому пути:
drop user [email protected]; flush privileges; create user [email protected] identified by 'admins_password'
Это позволило мне воссоздать мое имя пользователя и ввести пароль для имени пользователя
Ответ 12
В моем случае каталог данных был автоматически инициализирован с параметром --initialize-insecure
. Так что /var/log/mysql/error.log
не содержит временного пароля, но:
[Warning] 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