MySQL 5.7的默认根密码是什么

Rya*_*yan 64 mysql linux passwords password-recovery mysql-5.7

在使用root ID进行全新安装后无法登录到MySQL数据库,并且像其他较旧的MySQL版本一样无法登录到无/无密码

Ste*_*art 106

有很多答案说重新安装mysql或使用一些组合

mysqld_safe --skip-grant-tables
Run Code Online (Sandbox Code Playgroud)

和/或

UPDATE mysql.user SET Password=PASSWORD('password')
Run Code Online (Sandbox Code Playgroud)

和/或别的......

......这些都不适合我


这是我在Ubuntu 18.04上从顶部起作用的

特别赞赏这个答案让我从这个沮丧中解脱出来......

$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf
Run Code Online (Sandbox Code Playgroud)

请注意以下行:

user     = debian-sys-maint
password = blahblahblah
Run Code Online (Sandbox Code Playgroud)

然后:

$ 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
Run Code Online (Sandbox Code Playgroud)

或者:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Run Code Online (Sandbox Code Playgroud)

要么:

// For MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
Run Code Online (Sandbox Code Playgroud)

然后:

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!
Run Code Online (Sandbox Code Playgroud)

  • 最初没有为我工作.然后我尝试在EXIT之前发出一个COMMIT,它工作正常! (4认同)
  • 我已按照这些步骤操作,但对我来说不起作用.一切看起来都不错,但是一旦我重新启动MySQL,插件值就会重置为`auth_socket`.知道缺少什么吗? (3认同)
  • 测试了这个。默认情况下与** 18.04 LTS一起安装的mysql ** 5.7 + **使用`UPDATE mysql.user SET authentication_string = PASSWORD('new_password')where user ='root';更改密码,因此,您需要运行而不是由'new_password'标识的'ALTER USER'root'@'localhost';` (3认同)
  • 为我工作但不使用:mysql -u debian-sys-maint -p,我不得不使用:sudo mysql -u root.当我使用第一个时,即使使用COMMIT也没有保存更改 (2认同)
  • 需要在“冲洗特权”之前进行“提交”。 (2认同)

Rya*_*yan 94

从linux上的fresh安装MySQL-community-server 5.7后,您需要从/var/log/mysqld.log中找到临时密码以root身份登录.

  1. grep 'temporary password' /var/log/mysqld.log
  2. 运行mysql_secure_installation以更改新密码

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

  • /var/log/mysqld.log对我来说不存在(mariadb on mint) (20认同)
  • 对于那些找不到`/ var/log/mysqld.log`的人,只需运行`sudo mysql_secure_installation`即可.使用`sudo`重新运行该命令,否则您将收到"拒绝访问"错误. (9认同)
  • 这节省了我的生命......一直在寻找解决方案,这解决了我的所有问题.甚至来自mysql网站的文档都没有提到这一点.这是个疯子.谢谢! (7认同)
  • 谢谢!在这里找到这些信息有点疯狂,而不是Oracle的MySQL 5.7 doc. (6认同)
  • 如果 MySQL root 帐户使用“auth_socket”插件,`sudo mysql_secure_installation` 绝对不会执行任何操作。我在[下面的答案]中详细说明(/sf/ask/2379385991/#57948037) (2认同)

Zee*_*oft 23

MySQL 5.7改变了安全模型:现在MySQL root登录需要一个sudo

最简单(也是最安全)的解决方案是创建一个新用户并授予所需的权限.

1.连接到mysql

sudo mysql --user=root mysql
Run Code Online (Sandbox Code Playgroud)

2.为phpMyAdmin创建用户

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

参考 - https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7

  • 坦白说,我一开始就把这个答案看成是愚蠢的,然后尝试了很多其他方法,包括在本地Ubuntu Machine上不存在的文件中搜索随机生成的密码。但是,只需一个简单的SUDO和一个空白密码即可。有一个赞! (2认同)

hpa*_*nia 7

如果你想安装无人值守的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 $1 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';"
Run Code Online (Sandbox Code Playgroud)


小智 6

MySQL 5.7 或更高版本在全新安装后会生成默认的临时密码。

要首先使用 MySQL,您需要从 .log 文件中的日志文件中获取该密码/var/log/mysqld.log。因此,请遵循以下过程:

  1. grep 'temporary password' /var/log/mysqld.log

  2. mysql_secure_installation

需要第二个命令来更改 MySQL 的密码以及进行某些其他更改,例如删除临时数据库、允许或禁止远程访问 root 用户、删除匿名用户等……


Jul*_*org 6

我的新Linux Mint 19默认已安装MySQL服务器5.7。

但是,什么是MySQL root密码?事实证明:

默认安装使用auth_socket身份验证代替密码!

如果使用相同的用户名登录Linux系统,则它允许无密码登录。要以MySQL root身份登录user,可以使用sudo:

sudo mysql --user=root
Run Code Online (Sandbox Code Playgroud)

但是如何更改root密码?为了说明正在发生的情况,我创建了一个具有完全特权的新用户“ me”,该用户具有:

mysql> CREATE USER 'me'@'localhost' IDENTIFIED BY 'my_new_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'me'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

比较“我”与“根”:

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... |
+------+-----------------------+----------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

由于它使用的是auth_socket,因此无法更改root密码:SET PASSWORD命令失败,并且mysql_secure_installation无法获得任何信息...

==>要改变这种备用身份验证模式并使MySQL root用户返回使用密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SOME_NEW_ROOT_PASSWORD';
Run Code Online (Sandbox Code Playgroud)

一个很好的解释。

有关更多详细信息,请参见MySQL手册


Pab*_*zos 5

似乎事情旨在避免开发人员设置 root 用户,更好的解决方案是:

sudo mysql -u root
Run Code Online (Sandbox Code Playgroud)

然后创建一个普通用户,设置密码,然后使用该用户工作。

create user 'user'@'localhost' identified by 'user1234';
grant all on your_database.* to 'user'@'localhost';
select host, user from mysql.user;
Run Code Online (Sandbox Code Playgroud)

然后尝试访问:

mysql -u user -p
Run Code Online (Sandbox Code Playgroud)

繁荣!