当我使用here中所述的方法来重置root密码时, 启动服务器,如:
mysqld --init-file=/home/username/init-file
...不起作用。 它给了我一个错误:
[Server] Could not open /var/log/mysqld.log file for error logging: Permission denied.
权限还可以。
当我使用服务器时,启动正常:
service mysqld start
Fedora 28,MySQL 8.0.12
更新
我能做到这一点的唯一方法如下。
编辑 etc / my.cnf ,添加行:
[mysqld]
skip-grant-tables
比正常启动mysql-server并运行
FLUSH PRIVELEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPassword';
然后,再次编辑 etc / my.cnf 并删除不必要的行。
感谢大家的建议。
答案 0 :(得分:0)
只需在Phpmysql shell中键入以下命令即可。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'
答案 1 :(得分:0)
您必须先是/var/log/mysqld.log的所有者或组,然后才能执行此操作。由于无法写入日志文件而导致崩溃。
如果执行public function process(ContainerBuilder $container)
{
// Use our own CatchAll router rather than the default one
$definition = $container->findDefinition('router.default');
$definition->setClass(CatchAllRouter::class);
// register the service that we use to alter the targetPath saving mechanic
$definition->addMethodCall('setTargetPathSavingStatus', [new Reference('App\Routing\TargetPathSavingStatus')]);
// Use our own ExceptionListener so that we can tell it not to use saveTargetPath
// after the CatchAll router intercepts a 404
$definition = $container->findDefinition('security.exception_listener');
$definition->setClass(FirewallExceptionListener::class);
// register the service that we use to alter the targetPath saving mechanic
$definition->addMethodCall('setTargetPathSavingStatus', [new Reference('App\Routing\TargetPathSavingStatus')]);
// ...
}
,可以看到谁拥有它,然后在尝试启动mysql之前执行ls -l /var/log/mysqld.log
。
您可能需要成为root用户(操作系统root用户,而不是mysql root用户),具体取决于系统的设置方式。
以下是权限和所有权的本意:
https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-permissions.html
答案 2 :(得分:0)
如果您可以登录到MySQL服务器,并且希望通过查询更改密码,则可以通过以下方式进行操作:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
或删除根密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
感谢此博客:https://juejin.im/entry/5b06698cf265da0db3501fdd
也在这里回答了相同的问题:https://stackoverflow.com/a/54511940/1157720