4

我不得不安装 mysql 8.0,因为以前的版本崩溃了。
现在我正在努力设置root密码。默认的空密码不起作用,我试过rootmysql作为密码,但它们不起作用。
我已经创建了初始化文件来重置密码。不幸的是,我的密码不被接受,这是我的日志:

2018-02-16T10:12:22.962733Z 0 [Warning] [MY-010139] Changed limits: max_open_files: 5000 (requested 8161)
2018-02-16T10:12:22.962815Z 0 [Warning] [MY-010142] Changed limits: table_open_cache: 2419 (requested 4000)
2018-02-16T10:12:23.160066Z 0 [System] [MY-010116] /usr/sbin/mysqld (mysqld 8.0.4-rc-log) starting as process 20059 ...
2018-02-16T10:12:24.013727Z 0 [Warning] [MY-010068] CA certificate ca.pem is self signed.
2018-02-16T10:12:24.026122Z 0 [Warning] [MY-010319] Found invalid password for user: 'root@localhost'; Ignoring user
2018-02-16T10:12:24.043758Z 6 [Warning] [MY-010319] Found invalid password for user: 'root@localhost'; Ignoring user
2018-02-16T10:12:24.050668Z 0 [System] [MY-010931] /usr/sbin/mysqld: ready for connections. Version: '8.0.4-rc-log'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL).

这是我当前的初始化文件内容:

SET GLOBAL validate_password.policy = 'LOW';
UPDATE mysql.user
    SET authentication_string = PASSWORD('new_password'), password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

我尝试了很多不同的密码,没有一个有效。我尝试使用特殊字符和数字创建长度超过 16 个字符的密码,什么都没有。有什么建议我可以做些什么来重置密码并真正开始使用数据库?

4

4 回答 4

8

我有同样的问题。看起来他们用新版本更改了初始身份验证步骤。此处给出了说明。基本上:

$ sudo service mysqld start
$ sudo grep 'temporary password' /var/log/mysqld.log

(在下面使用该密码 - 或登录 mysql_secure_installation)

$ mysql -uroot -p
> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPasswd';

注意:他们也从 validate_password“插件”切换到“组件”——所以如果你不需要他们坚持的安全级别并且想要一个你能记住的密码,你必须在 mysql 中运行以下命令:

> UNINSTALL COMPONENT 'file://component_validate_password';

编辑:他们还更改了身份验证插件以支持更好的加密。如果您正在使用 Workbench 或其他附加组件并收到这些错误

Authentication plugin 'caching_sha2_password' cannot be loaded:
/usr/local/mysql/lib/plugin/caching_sha2_password.so not found

然后使用以下命令调整用户密码:

> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newPasswd';

您可能还应该在 /etc/my.cnf 中添加(或取消注释,如果已经存在)以下行

default-authentication-plugin=mysql_native_password
于 2018-05-31T17:38:48.870 回答
0

如果要执行 mysql 初始化文件,则需要--init-file在启动时将选项传递给 mysqld 可执行文件。

--initialize-insecure 您可以使用https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_initialize-insecure初始化您的 MySQL 服务器实例,为 root 设置空密码。

您还可以启动 mysqld--skip-grant-tables以连接到 mysql,而无需任何授权检查来重置 root 密码。建议从--skip-networkingoption开始,使用unix sockets连接mysql,以尽量减少mysql服务器对其他用户的暴露。

于 2018-04-17T15:43:11.293 回答
0

如果您可以登录到您的 MySQL 服务器并且您想通过查询更改您的密码,您可以通过以下方式进行:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

或删除root密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

感谢这个博客:https ://juejin.im/entry/5b06698cf265da0db3501fdd

于 2019-02-04T07:47:36.457 回答
0

如果您尚未重置密码,请同时输入以下命令:

mysql_secure_installation

它会要求输入root密码。你知道什么是root密码吗?在这里找到它:

cat /var/log/mysqld.log

在这里,您可以找到 root 的默认密码。然后运行以下命令:

mysql_secure_installation

然后输入那个密码。之后输入一个新密码。mysql server 8 将允许使用弱密码。因此,请尝试输入哈希密码之类的密码。重新输入该密码并完成。:)

于 2019-07-11T11:58:36.233 回答