用户'root'@'localhost'的MySQL访问被拒绝


24

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

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

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

用户'root'@'localhost'的访问被拒绝(使用密码:是)

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


1
尽量避免在命令行上将密码作为参数输入,其他用户可以通过进程列表找到它。好得多键入直接到程序或使用一键
Amias

语法-p password错误,必须-ppassword但不建议使用。更多信息:stackoverflow.com/questions/5131931/…–
Melebius

检查此页面以查找此错误的可能原因以及解决此错误的解决方法。rathishkumar.in/2017/04/…。它可能会帮助您。
rathishDBA

Answers:


12

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

mysql -u root -p

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

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

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

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


我进去了,但我仍然不知道如何更改或选择密码
user253867

在我链接的答案中,您必须5.x在最后用所使用的MySQL服务器版本替换。我正在使用5.5,所以我的命令将是sudo dpkg-reconfigure mysql-server-5.5
Parto

9
因此,问题是OP看到了Access denied for user 'root'@'localhost'。你建议打电话mysql -u root -p。该命令的结果是:Access denied for user 'root'@'localhost'
phil294

5
sudo mysql -u root -p为我工作,但mysql -u root -p不起作用
伊万·布莱克

7

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

update mysql.user set plugin = '';

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


尝试了所有..权限,组用户后,这解决了我在Ubuntu 16 LTS上的问题。谢谢
onalbi '16

是的,我已经运行了强化脚本,并且将插件更改为,mysql_socket所以无论我设置为使用PASSWORD('xxxxxx'),都无法正常工作。
TheVillageIdiot

4

为mysql设置密码

sudo dpkg-reconfigure mysql-server-5.x

现在打开终端并输入

mysql -uroot -p

输入密码,然后按Enter


4

我用这个解决了我的问题:

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

要非常负责。使用此解决方案,您将删除MySql服务器及其所有数据。


对我不起作用。
伊万·布莱克

!! 要非常负责。使用此解决方案,您将删除MySql服务器及其所有数据。
Matiss Jurgelis

4

与Ulrich Metzger一样,将计算机升级到Ubuntu 16.04和Mysql-server-5.7之后,由于plugin列已更改,我无法使用root用户登录。

我的问题无法通过sudo dpkg-reconfigure mysql-server-5.7+清除+清除+清洁解决。

我不得不停止mysql服务:

# sudo service mysql stop

然后使用以下--no-grant-tables选项重启mysql守护进程:

# sudo mysqld_safe --no-grant-tables &

然后在另一个终端中,使用命令进入mysql控制台(现在不需要身份验证)mysql,并通过SQL UPDATE更新密码和插件列:

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

最后,终止mysqld_safe命令,重新启动mysql服务并正常连接到mysql:

# sudo service mysql start
# mysql

2

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


这是为我工作的,似乎是问题的根源。卸载并重新安装不会解决“问题”。
SteveFromAccounting
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.