无法在 ubuntu 16 上使用 --skip-grant-tables 重置 root 密码

Can#39;t reset root password with --skip-grant-tables on ubuntu 16(无法在 ubuntu 16 上使用 --skip-grant-tables 重置 root 密码)
本文介绍了无法在 ubuntu 16 上使用 --skip-grant-tables 重置 root 密码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试按照 MysqlPasswordReset 重置根密码,但是当我尝试启动服务器时使用 --skip-grant-tables 服务器不会启动

I am trying to reset the root password following MysqlPasswordReset but when I try to start the server with --skip-grant-tables the server doesn't start

  • Ubuntu 16.04.1 LTS(GNU/Linux 4.4.0-59-generic x86_64)
  • mysql Ver 14.14 Distrib 5.7.17,适用于 Linux (x86_64)

服务器正在运行

$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

停止服务器

$ sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.

尝试从 --skip-grant-tables 开始

Trying to start with --skip-grant-tables

sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 9856

无需密码即可连接

$ mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
[1]+  Exit 1                  sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking

我也尝试从mysql_safe开始(error.log为空)

I also tried to start with mysql_safe (error.log is empty)

sudo mysqld_safe --skip-grant-tables
2017-02-01T16:33:31.382105Z mysqld_safe Logging to syslog.
2017-02-01T16:33:31.383942Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-01T16:33:31.386058Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-01T16:33:31.388009Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

推荐答案

我发现mysql服务停止时mysql.sock被删除,mysqld_safe无法创建(我没找到原因),所以我的解决方案是在启动 mysqld_safe 之前备份 sock 文件夹并恢复

I found that the mysql.sock is deleted when the mysql service is stoped and mysqld_safe can't create it (I couldn't find the reason), so my solution was back up the sock folder and restore before start mysqld_safe

启动服务器

$ sudo service mysql start

进入袜子文件夹

$ cd /var/run

备份袜子

$ sudo cp -rp ./mysqld ./mysqld.bak

停止服务器

$ sudo service mysql stop

恢复袜子

$ sudo mv ./mysqld.bak ./mysqld

启动mysqld_safe

Start mysqld_safe

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

初始化mysql shell

Init mysql shell

mysql -u root

修改密码

FLUSH PRIVILEGES;

SET PASSWORD FOR root@'localhost' = PASSWORD('my_new_password');

这篇关于无法在 ubuntu 16 上使用 --skip-grant-tables 重置 root 密码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Difficulties installing mysql gem on Ubuntu(在 Ubuntu 上安装 mysql gem 的困难)
Default password of mysql in ubuntu server 16.04(ubuntu server 16.04 mysql的默认密码)
MySQL is extremely slow on EC2(MySQL 在 EC2 上非常慢)
preconfigure an empty password for mysql via debconf-set-selections(通过 debconf-set-selections 为 mysql 预配置一个空密码)
How can I pass a password from a bash script to aptitude for installing mysql?(如何将密码从 bash 脚本传递到 aptitude 以安装 mysql?)
How to edit the path in odbcinst -j(如何在odbcinst-j中编辑路径)