MySQL 5.7 mysqld --initialize 后如何选择root密码

Fad*_*aos 9 mysql windows-10

如果我做“mysqld --initialize-insecure”,初始化后登录就可以了,但是如果我省略“insecure”,那将是安全初始化,之后我需要密码才能登录,但我没有设置任何密码。

菜单data-directory-initialization-mysqld表示“无论平台,使用 --initialize 进行“默认安全”安装(即包括生成随机初始 root 密码)。在这种情况下,密码标记为过期了,你需要选择一个新的。”

我认为这将是问题所在,mysql 使用“随机密码”和“标记为过期”初始化超级管理帐户“root”,我需要“选择一个新的”,但是如何?

我应该尝试mysqld --initialize -p 'mypassword'还是应该在初始化后键入一些其他提示子句?

这个问题真的很困扰我(两次,我上次在搜索了很长时间的解决方案后放弃了),确实我不需要安全模式来提供数据只是为了在本地测试我的应用程序,但我想知道如何初始化一个安全的 root 帐户以供进一步使用。

我不确定我在阅读手册后遗漏了什么,并再次用谷歌搜索了 4 个小时。

谢谢你。

Pro*_*man 10

您只需使用root用户和使用该--initialize选项时生成的给定密码登录即可。从 https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization.html#data-directory-initialization-server-actions

使用 --initialize 而不是 --initialize-insecure,服务器生成一个随机密码,将其标记为已过期,并写入一条显示密码的消息:

[Warning] A temporary password is generated for root@localhost:
iTag*AfrH5ej
Run Code Online (Sandbox Code Playgroud)

登录后,您可以使用 更改密码ALTER USER。仍然来自https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization.html#data-directory-initialization-password-assignment

  1. 启动服务器。有关说明,请参阅第 2.10.2 节 “启动服务器”。

  2. 连接到服务器:

    [...]

  3. 连接后,分配一个新的root密码:

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

  • 就我而言,它没有显示,即使使用“--console”也没有显示。但我在`/var/log/mysql/error.log`中找到了它。 (5认同)
  • 在 mysql 8.0.20 上进行的测试,初始化数据文件夹时默认不显示临时密码:我使用此命令从控制台“mysqld --initialize --console”获取此临时密码 (2认同)