我在我的linux服务器上安装了一个MySQL,我忘记了它的密码,所以我去了,并使用我在网上find的方法来改变它。 我所做的是如下:
/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
更新查询确实更改了密码,因为它显示了受影响的行数和查询OK等
然后我重新启动MySQL
/etc/init.d/mysql stop /etc/init.d/mysql start
现在,当我用新的密码loginmysql -u root -p new_pass
它仍然给我错误“错误1045(28000):访问拒绝用户'root'@'localhost'(使用密码:是)”
有什么我失踪了吗?
我能够通过执行这个语句来解决这个问题
sudo dpkg-reconfigure mysql-server-5.5
这将改变根密码。
您可以通过以下五个简单步骤恢复MySQL数据库服务器密码。 以下是您需要为每个步骤键入的命令(以root用户身份登录):
步骤1:停止mysql服务
/etc/init.d/mysql stop
输出:
Stopping MySQL database server: mysqld.
步骤#2:启动到MySQL服务器W / O密码:
mysqld_safe --skip-grant-tables &
输出:
[1] 5988 Starting mysqld daemon with databases from /var/lib/mysql mysqld_safe[6025]: started
步骤#3:使用mysql客户端连接到mysql服务器:
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 root用户密码
mysql> use mysql; mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root'; mysql> flush privileges; mysql> quit
步骤#5:停止MySQL服务器:
/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
步骤#6:启动MySQL服务器并测试它
/etc/init.d/mysql start mysql -u root -p
你必须重置密码! 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
你的新密码是“密码”。
我有同样的问题。 你必须写mysql -u root -p
不是mysql或mysql -u root -p root_password
我遇到了同样的问题,@ prorAmmar开明了我,“ 仔细看看mysql数据库中的用户表 ”。
我的问题不是ssl_type ,而不是第一个字段: 主机 。 我改变了使用的价值
update user set Host='localhost' where User='root' and Host='%';
在mysqld_safe --skip-grant-tables模型中。
那么它运作良好。
您可能需要清除您的根帐户的plugin列。 在我全新安装的时候,所有的root用户帐户都在plugin列中设置了unix_socket 。 这是因为只有系统根可以通过套接字登录,所以root账户只能被锁定到root账户。
如果你update user set plugin='' where User='root';flush privileges; ,您现在应该可以从任何本地主机unix帐户(使用密码)登录到root帐户。
看到这个AskUbuntu的问题和答案的更多细节。
在mac os上,请按照以下步骤操作:
停止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启动你的新密码是'密码'。
在我的情况下:
/etc/init.d/mysql停止
mysqld_safe –skip-grant-tables&
(在新窗口中)
mysql -u root
mysql>使用mysql;
mysql> update user set authentication_string = password('password')where user ='root';
mysql>刷新权限;
mysql>退出
/etc/init.d/mysql重新启动
你可以试试这个解决方案:
要让MySQL询问密码,还需要指定-p选项:(尝试使用-p和密码之间的空格)
mysql -u root -p new_password
MySQLl访问被拒绝
在第二个链接有人评论了同样的问题。
其实我仔细看看mysql数据库中的用户表,结果发现有人在我之前编辑用户root的ssl_type字段到SSL。
我编辑该字段,并重新启动MySQL,它像一个魅力。
谢谢。