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

use*_*867 34 server mysql password 12.04

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

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

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

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

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

Par*_*rto 13

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

mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

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

mysql -hxxx.xxx.xxx.xxx -uroot -p
Run Code Online (Sandbox Code Playgroud)

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

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

  • 所以,问题是 OP 看到“用户'root'@'localhost''的访问被拒绝。你建议调用`mysql -u root -p`。此命令的结果是:`用户'root'@'localhost''的访问被拒绝。 (15认同)
  • `sudo mysql -u root -p` 对我有用,但 `mysql -u root -p` 不行 (8认同)

dog*_*ato 7

我更新时遇到相同的症状,但对我而言,修复(在杀死 mysql 并使用 --skip-grant-tables 重新启动以进入后)是执行

update mysql.user set plugin = '';
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt install mysql-server
Run Code Online (Sandbox Code Playgroud)

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

  • !! 非常负责。使用此解决方案,您将删除 MySql 服务器及其所有数据。 (2认同)

小智 5

与 Ulrich Metzger 一样,将我的机器升级到 Ubuntu 16.04 和 Mysql-server-5.7 后,我无法使用 root 登录,因为列plugin发生了变化。

我的问题没有通过sudo dpkg-reconfigure mysql-server-5.7+移除+清除+清洁得到解决。

我不得不停止 mysql 服务:

# sudo service mysql stop

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

# 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';
Run Code Online (Sandbox Code Playgroud)

最后killmysqld_safe命令,重启mysql服务,正常连接mysql:

# sudo service mysql start
# mysql
Run Code Online (Sandbox Code Playgroud)