MySQL访问被拒绝用户’root’@’localhost’

在我的服务器中,每次我尝试访问MySQL时都会收到错误:

用户’root’@’localhost’访问被拒绝(使用密码:NO)

当我尝试mysqladmin -u root -p password我得到了

用户’root’@’localhost’拒绝访问(使用密码:YES)

如何在我的Ubuntu服务器12.04中访问MySQL?

如果您正在运行n localhost,只需在终端中键入以下命令:

 mysql -u root -p 

如果您使用的是外部服务器,请输入主机IP(xxx.xxx.xxx.xxx):

 mysql -hxxx.xxx.xxx.xxx -uroot -p 

系统将提示您输入密码,输入密码并可以访问MySQL提示符。

您还可以查看有关如何重置MySQL密码的答案 。

我更新时会出现相同的症状,但对我来说,修复(杀死mysql并重新启动–skip-grant-tables进入后)是执行的

 update mysql.user set plugin = ''; 

更新过程喜欢将此列设置为“unix_socket”。 我不知道应该完成什么,但对我来说它打破了一切。

设置mysql的密码

 sudo dpkg-reconfigure mysql-server-5.x 

现在打开终端并输入

 mysql -uroot -p 

输入密码并按Enter键

我解决了我的问题:

 sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove sudo apt-get autoclean sudo apt install mysql-server 

与Ulrich Metzger一样,在将我的机器升级到Ubuntu 16.04和Mysql-server-5.7之后,由于mysql数据库中的plugin列已更改,我无法使用root登录。

sudo dpkg-reconfigure mysql-server-5.7命令和删除,清除和清理都没有解决我的问题。

我不得不停止mysql服务

# sudo service mysql stop

启动没有--no-grant-tables选项的mysql守护程序

# sudo mysql_safe --no-grant-tables &

然后在另一个终端中,使用命令mysql输入mysql(不再具有authenfication),并通过sql UPDATE更新密码和插件列

 UPDATE mysql.user SET authentication_string=PASSWORD(''), plugin='mysql_native_password' WHERE User='root' AND Host='localhost'; 

最后杀掉mysql_safe命令,重启mysql服务并连接到mysql normaly

 # sudo service mysql start # mysql 

从ubuntu 14.4LTS升级到16.4LTS之后,由于mysql用户表的插件列中的错误条目,mysql root用户无法再登录。 升级将root @ localhost用户的插件值设置为auth_socket,但如果您之前使用过mysql本机密码加密,则正确的条目必须是mysql_native_password