Can#39;t reset root password with --skip-grant-tables on ubuntu 16(无法在 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 密码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:无法在 ubuntu 16 上使用 --skip-grant-tables 重置 root 密码
基础教程推荐
- SQL Server 2016更改对象所有者 2022-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- Sql Server 字符串到日期的转换 2021-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01