我试图在MysqlPasswordReset之后重置根密码,但是当我尝试用跳过授予表启动服务器时,服务器不会启动。
服务器正在运行
$ 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.
试着从--跳过-授予-表开始
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是空的)
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.
发布于 2017-02-01 11:09:33
我发现当mysql服务停止时,mysql.sock被删除了,mysqld_safe无法创建它(我找不到原因),所以我的解决方案是备份sock文件夹并在启动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
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
Init mysql外壳
mysql -u root
更改密码
FLUSH PRIVILEGES;
SET PASSWORD FOR root@'localhost' = PASSWORD('my_new_password');
发布于 2019-11-18 11:30:10
对于使用MySQL 8.0.17-0ubuntu2的Ubuntu 19,最终为我工作的是多种答案的组合:
/etc/mysql/mysql.conf.d/mysqld.cnf
)中,在[mysqld]
下面添加:
skip-grant-tables = 1 plugin-load-add = auth_socket.so
mysql -uroot
;更新mysql.user设置authentication_string=null,其中User='root';刷新权限;更改用户'root'@'localhost‘与mysql_native_password标识为'pass123';
skip-grant-tables
;mysql -u root -ppass123
。发布于 2018-05-15 15:57:59
上面的佩特罗纳尔伯特氏回答对我有效,但最后一步现在已不再推荐,并抛出以下警告:
警告\ 1287 \“SET PASSWORD FOR =PASSWORD(‘’)”被废弃,并将在以后的发行版中删除。请用SET密码代替= '‘
使用以下命令:
SET PASSWORD FOR root = '<plaintext_password>';
https://stackoverflow.com/questions/41984956
复制相似问题