Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 重置根密码时出现问题:Unix和类Unix系统_Mysql - Fatal编程技术网

Mysql 重置根密码时出现问题:Unix和类Unix系统

Mysql 重置根密码时出现问题:Unix和类Unix系统,mysql,Mysql,当我尝试登录mysql根用户时,出现错误1045。我试图按照指示在mysql网站上重置密码,但我遇到了问题 第一步是-1。以运行MySQL服务器的Unix用户身份登录系统(例如,MySQL) 我刚刚登录到我的计算机上的管理员帐户,我一直使用mysql。然后我运行命令“mysql service stop;” 第二步2-如果MySQL服务器正在运行,则将其置于顶部。找到包含服务器进程ID的.pid文件。此文件的确切位置和名称取决于您的发行版、主机名和配置。常见的位置是/var/lib/mysql/

当我尝试登录mysql根用户时,出现错误1045。我试图按照指示在mysql网站上重置密码,但我遇到了问题

第一步是-1。以运行MySQL服务器的Unix用户身份登录系统(例如,MySQL)

我刚刚登录到我的计算机上的管理员帐户,我一直使用mysql。然后我运行命令“mysql service stop;”

第二步2-如果MySQL服务器正在运行,则将其置于顶部。找到包含服务器进程ID的.pid文件。此文件的确切位置和名称取决于您的发行版、主机名和配置。常见的位置是/var/lib/mysql/、/var/run/mysqld/、和/usr/local/mysql/data/。通常,文件名的扩展名为.pid,并以mysqld或系统的主机名开头

我没有/var/run/mysqld和/usr/local/mysql/data的目录路径,但是/var/lib/mysql显示了这一点

cd var/lib/mysql
root@Roedelius:/var/lib/mysql# ls
auto.cnf         ibdata1      mysql               performance_schema
debian-5.7.flag  ib_logfile0  mysql_upgrade_info  posts
ib_buffer_pool   ib_logfile1  mytodo              sys
我这里没有.pid文件,所以我不知道如何继续下一步。我很感激你能帮我做这件事

停止我的mysql服务并执行此操作

orpheus@Roedelius:~$ mysqld --skip-grant-tables
显示了这一点

mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13 - Permission denied)
2018-08-01T22:03:56.332143Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-08-01T22:03:56.332216Z 0 [Warning] Can't create test file /var/lib/mysql/Roedelius.lower-test
2018-08-01T22:03:56.332241Z 0 [Note] mysqld (mysqld 5.7.23-0ubuntu0.18.04.1) starting as process 9399 ...
2018-08-01T22:03:56.334186Z 0 [Warning] Can't create test file /var/lib/mysql/Roedelius.lower-test
2018-08-01T22:03:56.334201Z 0 [Warning] Can't create test file /var/lib/mysql/Roedelius.lower-test
2018-08-01T22:03:56.334463Z 0 [Warning] One can only use the --user switch if running as root

2018-08-01T22:03:56.334491Z 0 [ERROR] failed to set datadir to /var/lib/mysql/
2018-08-01T22:03:56.334502Z 0 [ERROR] Aborting

2018-08-01T22:03:56.334514Z 0 [Note] Binlog end
2018-08-01T22:03:56.334551Z 0 [Note] mysqld: Shutdown complete

您链接到days以查找插件定义的问题:

SELECT User, Host, plugin FROM mysql.user;
如果用户root使用auth_套接字,则无论密码如何,只有以root身份运行的进程才能以root身份连接

它还表示,如果要对root用户使用密码身份验证,则应使用以下命令:

UPDATE mysql.user SET plugin='mysql_native_password' WHERE User='root';
编辑:
要使用
--跳过授权表
,请停止mysql服务器,然后使用

mysqld --skip-grant-tables

为'root'@'localhost'显示授予了什么?错误1141(42000):没有为主机'localhost'上的用户'root'定义这样的授予。。因为您的
选择了user,主机来自mysql.user显示一条
root | localhost
记录。。。您的MySQL服务器可能存在某种损坏,可能需要重新安装或在其他端口上安装新的MySQL。。因此,您可能能够将数据从一台服务器恢复到另一台服务器。我认为它没有损坏,因为直到今天我登录到root时,它工作正常。我还没有尝试用--skip grant tables重置我的根密码,现在我仍然确定如何用--skip grant tables启动mysql。如果你知道怎么做,请告诉我。
mysql——跳过授权表
无法工作,因为mysql是客户端程序。。您需要在名为
mysqld
的服务器程序上使用
--skip grant tables
。。手册正在解释,其中显示了从mysql.User;+----------------------------+-------------+-------------+--------------+--------------选择用户、主机、插件用户|主机|插件|+------------------+-------------+----------------------------+|根|本地主机| |
。如果我使用updatemysql.user命令,其中显示plugin='mysql\u native\u password',我是否输入了任何我想设置的新密码?我用上面的回答中显示的命令将密码设置为“woofwoof”,但仍然出现错误1045。空列插件似乎表明mysql服务器不使用插件。另一方面,该列存在,这表明它应该得到支持。我尝试使用--skip grant tables这样做,但在我上面的问题中出现了一个大错误。你知道为什么会发生这种情况吗?你必须以root用户身份运行mysqld(或者使用sudo)。我在
orpheus@Roedelius:~$sudo mysqld——跳过orpheus的授权表[sudo]密码:
,然后它在我的终端线路上什么也没有显示,所以我认为它起作用了。然后,我再次启动了mysql服务,并与另一个用户登录,并完成了
mysql>FLUSH特权;查询正常,0行受影响(0.00秒)mysql>ALTER用户“root”@“localhost”由“woofwoof”标识;错误1396(HY000):针对“root”@“localhost”的ALTER USER操作失败。
它没有运行与mysql站点上的unix重置密码指南相同的步骤。我做错了什么?