我在我的linux服务器上安装了MySQL,我忘记了它的密码所以我去了,并使用我在网上找到的方法进行了更改。我所做的如下:
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql --user root mysql
SELECT * FROM user; // I checked if I could access the user table or not
update user SET password = PASSWORD('new_pass') WHERE user = 'root';
flush privileges;
exit
更新查询确实更改了密码,因为它显示了受影响的行数和查询确定等。
然后我重新启动了mysql
/etc/init.d/mysql stop
/etc/init.d/mysql start
现在我使用新密码登录
mysql -u root -p new_pass
它仍然给我错误 " ERROR 1045(28000):拒绝访问用户&root;' @' localhost' (使用密码:是)"
我有什么遗失的东西吗?
答案 0 :(得分:17)
我能够通过执行此语句来解决这个问题
sudo dpkg-reconfigure mysql-server-5.5
这将更改root密码。
答案 1 :(得分:10)
您可以通过以下五个简单步骤恢复MySQL数据库服务器密码。 以下是您需要为每个步骤键入的命令(以root用户身份登录):
/etc/init.d/mysql stop
<强>输出:强>
Stopping MySQL database server: mysqld.
mysqld_safe --skip-grant-tables &
<强>输出:强>
[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started
mysql -u root
<强>输出:强>
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
/etc/init.d/mysql stop
<强>输出:强>
Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+ Done mysqld_safe --skip-grant-tables
/etc/init.d/mysql start
mysql -u root -p
答案 2 :(得分:6)
您必须重置密码! mac osx(测试和工作)和ubuntu的步骤
停止MySQL
$ sudo /usr/local/mysql/support-files/mysql.server stop
以安全模式启动:
$ sudo mysqld_safe --skip-grant-tables
(上面一行是整个命令)
这将是一个持续的命令,直到该过程完成,因此打开另一个shell /终端窗口,无需密码登录:
$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
启动MySQL
sudo /usr/local/mysql/support-files/mysql.server start
您的新密码是&#39;密码&#39;。
答案 3 :(得分:3)
我遇到了同样的问题。你必须写mysql -u root -p
不是mysql
或mysql -u root -p root_password
答案 4 :(得分:3)
我遇到了同样的问题,@ progrAmmar启发了我,“仔细查看了mysql数据库中的用户表”。
我的问题不是 ssl_type ,而不是第一个字段:主机。我使用
更改了值 update user set Host='localhost' where User='root' and Host='%';
mysqld_safe --skip-grant-tables
模型中的。
然后它运作良好。
答案 5 :(得分:3)
您可能需要清除root帐户的plugin
列。在我的全新安装中,所有root用户帐户都在unix_socket
列中设置了plugin
。这导致root sql帐户仅被锁定到root unix帐户,因为只有系统root可以通过套接字登录。
如果您update user set plugin='' where User='root';flush privileges;
,您现在应该可以从任何localhost unix帐户(使用密码)登录root帐户。
有关详细信息,请参阅this AskUbuntu question and answer。
答案 6 :(得分:2)
在mac os上,请按照以下步骤操作:
停止MySQL
$ sudo /usr/local/mysql/support-files/mysql.server stop 以安全模式启动它:
$ sudo mysqld_safe --skip-grant-tables (上面的行是整个命令)
这将是一个持续的命令,直到该过程完成,因此打开另一个shell /终端窗口,无需密码登录:
$ mysql -u root
的MySQL&GT; UPDATE mysql.user SET Password = PASSWORD(&#39; password&#39;)WHERE User =&#39; root&#39 ;; 启动MySQL
sudo /usr/local/mysql/support-files/mysql.server start 您的新密码是&#39;密码&#39;。
答案 7 :(得分:2)
就我而言:
(在新窗口中)
答案 8 :(得分:0)
实际上我仔细看了一下mysql数据库中的用户表,结果发现有人在我编辑ssl_type字段之前将root用户改为SSL。
我编辑了那个字段并重新启动了mysql,它就像一个魅力。
感谢。
答案 9 :(得分:0)
也许当前用户不是root用户,请尝试sudo mysql -uroot -p,我刚刚成功。
答案 10 :(得分:-1)
您可以尝试此解决方案: -
要让mysql询问您的密码,您还需要指定-p-option :(尝试使用-p和密码之间的空格)
mysql -u root -p new_password
在Second link中有人评论了相同的问题。