无法启动MySQL重置root密码


1

我已经安装mysql-server在Linux机器上并忘记了(oops)root密码。浏览互联网后,一般方法如下:

  1. 停止MySQL(sudo service mysql stop
  2. 以特殊模式启动MySQL(sudo mysqld_safe --skip-grant-tables
  3. 登录本地服务器并重置密码(mysql -u root

我的问题是在2号。当我运行命令时,它说了一些关于记录和启动守护进程的东西,然后以该行结束

mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

并使用sudo service mysql status确认MySQL已经停止了。

它为什么突然停止?而且(更重要的是)我怎样才能让它继续运行以便重置我的密码?

提前致谢

编辑这里是“关于loggin和启动守护进程的东西”的完整日志:

$ mysqld_safe --skip-grant-tables 
141219 16:55:20 mysqld_safe Logging to syslog.
141219 16:55:20 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
141219 16:55:20 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
$ 

编辑2和/ var / log / syslog的输出(我用我的主机名替换<hostname>

Dec 20 10:20:09 <hostname> mysqld_safe: Starting mysqld daemon with databases from /var/lib/mysql
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [Warning] Can't create test file /var/lib/mysql/<hostname>.lower-test
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [Warning] Can't create test file /var/lib/mysql/<hostname>.lower-test
Dec 20 10:20:09 <hostname> mysqld: #007/usr/sbin/mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13)
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [ERROR] Aborting
Dec 20 10:20:09 <hostname> mysqld: 
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [Note] /usr/sbin/mysqld: Shutdown complete
Dec 20 10:20:09 <hostname> mysqld: 
Dec 20 10:20:09 <hostname> mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended

请你能在问题中添加所有“关于记录和启动守护进程的东西”。如果编辑出所有诊断信息,则无法诊断问题。
迈克斯科特

好的,谢谢你的数据。现在你可以查看系统日志,看看它在那里记录了什么?
迈克斯科特

我在哪里访问syslog?
Luke Moll 2014年

我担心这取决于你如何配置你的系统,但你可以寻找/ var / syslog。
迈克斯科特

它在/ var / log / syslog中,我重新运行命令来获取输出,因为看起来syslog只保留最新的消息。
Luke Moll 2014年

Answers:


0

好吧,看起来/ var / lib / mysql不存在或者mysql用户没有访问权限。无论哪种方式,您遇到的问题都比忘记root密码更糟糕 - 您根本没有数据库,或者某些内容已经更改了文件权限或所有权。


会重新安装mysql-server帮助吗?
Luke Moll 2014年

可能,是的,如果您没有任何想要保留的数据。
迈克斯科特

不知道是什么问题,但运行#apt-get purge mysql-server mysql-server-5.5 mysql-core-5.5然后重新安装MySQL服务器(确保写下密码:D)
Luke Moll

3

此问题可能是由于多个问题引起的。您可以从“tail /var/log/mysql/error.log”中找到确切的错误。我已经为这类问题添加了默认修复程序。如果以下不起作用,那么从日志中更新我们的打印,我们可以尝试获取一些信息并进一步移动

使用以下命令终止所有MySQL进程。

ps aux | grep mysql kill pid

使用“ which mysqld_safe ”命令查找mysqld守护程序的路径

从mysqld_safe位置启动没有授权表的MySQL

/mysqld_safe_available_directory/mysqld_safe --skip-grant-tables &

ex / bin / mysqld_safe

mysql -u root 

设置新密码的步骤:

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit

给它一个尝试,但$ ps aux | grep mysql kill pid给出grep: kill: No such file or directory grep: pid: No such file or directory,然后其余步骤相同的问题作为问题(... pid结束)。当我尝试了ps aux | grep mysql那么kill (pid)其中pid它在PID列的数字,它说No such process
Luke Moll 2014年

0

我遇到同样的问题Aborting来自对/var/lib/mysql 属于用户的文件夹的权限mysql,然后root没有完全访问权限

解决了它:

$ sudo su - mysql

$ mysqld_safe --skip-grant-tables &
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.