我尝试sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
重新启动 mariadb 服务器,但仍然收到拒绝访问错误sudo mysql -u root
。
对我有用的是:
sudo systemctl stop mariadb
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
sudo mysql -u root
现在在 mysql 控制台中:
FLUSH PRIVILEGES;
当我这样做时出现错误:
SET PASSWORD FOR root@'localhost' = PASSWORD('password');
但这有效:
UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
完成:
FLUSH PRIVILEGES;
exit
回到外壳:
sudo /etc/init.d/mysql stop
对我来说,我仍然可以使用连接,mysql -u root
所以我以一种不好的方式停止了服务器:获取 PID(s)ps -aux | grep mysql
并终止它们sudo kill -9 <pid>
一旦我们确定 mysql 服务器没有运行,请以正常方式重新启动:
sudo systemctl start mariadb
现在将再次需要密码,但我们知道 root 密码是什么。
在 final 之前,如果您尝试使用该方法systemctl start mariadb
,可能希望安全运行。sudo systemctl set-environment MYSQLD_OPTS=""