我在FreeBSD 7.3上运行MySQL 5.0.77。 MySQL root密码丢失了,我想重置它。但我有以下问题。
我停止了MySQL,并使用--skip-grant-tables
选项重新启动:
/usr/local/etc/rc.d/mysqld start --skip-grant-tables
服务启动,但是当我尝试在没有密码的情况下登录时:
mysql -u root
我收到了这个回复:
ERROR 1045(28000):用户'root'@'localhost'拒绝访问(使用密码:NO)
我可以以其他用户(缺少SUPERUSER权限)登录,但不能以root身份登录。谁知道我做错了什么?
答案 0 :(得分:0)
答案 1 :(得分:0)
我刚刚过了一些类似的情况,经过一些挫折后,我意识到我的计算机中运行了2个MySQL安装,一个在我的操作系统中,一个安装在本地服务器包中。在我的情况下,这个烦人的情况刚刚解决了关闭我的操作系统的SQL服务
答案 2 :(得分:0)
我尝试使用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
回到shell:
sudo /etc/init.d/mysql stop
对我来说,我仍然可以使用mysql -u root
进行连接,因此我以一种不好的方式停止了服务器:使用ps -aux | grep mysql
获取PID并使用sudo kill -9 <pid>
终止它们
一旦我们确定mysql服务器未运行,请以正常方式重启:
sudo systemctl start mariadb
现在将再次需要密码,但是我们知道什么是root密码。
在最终systemctl start mariadb
之前,为了安全起见,可能希望运行sudo systemctl set-environment MYSQLD_OPTS=""
。