首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >不能用ubuntu 16上的跳过授予表重置根密码。

不能用ubuntu 16上的跳过授予表重置根密码。
EN

Stack Overflow用户
提问于 2017-02-01 16:37:11
回答 4查看 91.9K关注 0票数 62

我试图在MysqlPasswordReset之后重置根密码,但是当我尝试用跳过授予表启动服务器时,服务器不会启动。

  • Ubuntu16.04.1 LTS (GNU/Linux4.4.0-59-通用x86_64)
  • mysql 14.14远程5.7.17,用于Linux (x86_64)

服务器正在运行

代码语言:javascript
代码运行次数:0
运行
复制
$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

停止服务器

代码语言:javascript
代码运行次数:0
运行
复制
$ sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.

试着从--跳过-授予-表开始

代码语言:javascript
代码运行次数:0
运行
复制
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 9856

无密码连接

代码语言:javascript
代码运行次数:0
运行
复制
$ 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是空的)

代码语言:javascript
代码运行次数:0
运行
复制
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.
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-02-01 19:09:33

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

启动服务器

代码语言:javascript
代码运行次数:0
运行
复制
$ sudo service mysql start

转到袜子文件夹

代码语言:javascript
代码运行次数:0
运行
复制
$ cd /var/run

把袜子放回去

代码语言:javascript
代码运行次数:0
运行
复制
$ sudo cp -rp ./mysqld ./mysqld.bak

停止服务器

代码语言:javascript
代码运行次数:0
运行
复制
$ sudo service mysql stop

恢复袜子

代码语言:javascript
代码运行次数:0
运行
复制
$ sudo mv ./mysqld.bak ./mysqld

启动mysqld_safe

代码语言:javascript
代码运行次数:0
运行
复制
$ sudo mysqld_safe --skip-grant-tables --skip-networking &

Init mysql外壳

代码语言:javascript
代码运行次数:0
运行
复制
mysql -u root

更改密码

代码语言:javascript
代码运行次数:0
运行
复制
FLUSH PRIVILEGES;

SET PASSWORD FOR root@'localhost' = PASSWORD('my_new_password');
票数 163
EN

Stack Overflow用户

发布于 2019-11-18 19:30:10

对于使用MySQL 8.0.17-0ubuntu2的Ubuntu 19,最终为我工作的是多种答案的组合:

  1. 在MySQL的配置文件(我的计算机上的/etc/mysql/mysql.conf.d/mysqld.cnf)中,在[mysqld]下面添加: skip-grant-tables = 1 plugin-load-add = auth_socket.so
  2. 重新启动MySQL服务;
  3. 连接到MySQL:mysql -uroot
  4. 运行:

更新mysql.user设置authentication_string=null,其中User='root';刷新权限;更改用户'root'@'localhost‘与mysql_native_password标识为'pass123';

  1. 停止MySQL并在配置文件中注释skip-grant-tables
  2. 再次启动MySQL,现在应该可以工作了:mysql -u root -ppass123
票数 52
EN

Stack Overflow用户

发布于 2018-05-15 23:57:59

上面的佩特罗纳尔伯特氏回答对我有效,但最后一步现在已不再推荐,并抛出以下警告:

警告\ 1287 \“SET PASSWORD FOR =PASSWORD(‘’)”被废弃,并将在以后的发行版中删除。请用SET密码代替= '‘

使用以下命令:

代码语言:javascript
代码运行次数:0
运行
复制
SET PASSWORD FOR root = '<plaintext_password>';
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41984956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档