当前位置: 首页>>技术教程>>正文


mysql – 错误1045(28000):用户’root’@’localhost’的访问被拒绝(使用密码:是)

, ,

问题描述

我是一名电气工程师,主要研究电源系统而不是编程。最近,我一直在遵循手册在Ubuntu上安装软件套件。实际上,我完全不了解mySQL。我已经在Ubuntu上完成了以下安装。

sudo apt-get update
sudo apt-get install mysql-server-5.5
sudo apt-get install mysql-client-5.5
sudo apt-get install mysql-common
sudo apt-get install glade
sudo apt-get install ntp

那我做

me@ubuntu:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

我最终收到以下错误消息。

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我该如何修复并继续?

最佳方案

注意:对于MySQL 5.7+,请参阅answer from @Lahiru。那包含更多当前信息。

对于MySQL< 5.7:

默认的root密码为空白(即空字符串),而不是root。因此,您只需登录为:

mysql -u root

您显然应该在安装后更改root密码

mysqladmin -u root password [newpassword]

在大多数情况下,在广泛使用数据库之前,您还应该设置单个用户帐户。

次佳方案

我可以通过执行以下语句解决此问题

sudo dpkg-reconfigure mysql-server-5.5

这将更改根密码。

第三种方案

您必须重设密码! Mac osx(已测试并工作)和ubuntu的步骤

使用停止MySQL

sudo service mysql stop

要么

$ sudo /usr/local/mysql/support-files/mysql.server stop

以安全模式启动它:

$ sudo mysqld_safe --skip-grant-tables --skip-networking

(以上是整个命令)

在此过程完成之前,这将是一个持续执行的命令,因此请打开另一个 shell 程序/终端窗口,无需密码即可登录:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

根据@IberoMedia的评论,对于较新版本的MySQL,该字段称为authentication_string

mysql> UPDATE mysql.user SET authentication_string =PASSWORD('password') WHERE User='root';

使用以下命令启动MySQL:

sudo service mysql start

要么

sudo /usr/local/mysql/support-files/mysql.server start

您的新密码是’password’。

第四种方案

我知道这是一个老问题,但我认为这可能会对某人有所帮助。最近,我遇到了同样的问题,但就我而言,我记得我的密码还可以,但是它一直给我同样的错误。我尝试了很多解决方案,但仍然没有帮助,然后我尝试了

mysql -u root -p 

之后,它要求您输入这样的密码

Enter password: 

然后输入我使用的密码。就这样

第五种方案

假设服务器的数据目录为空,则在服务器首次启动时会发生以下情况:

  • 服务器已初始化。

  • SSL证书和密钥文件在数据目录中生成。

  • validate_password插件已安装并启用。

  • 超级用户帐户’root’@’localhost’已创建。超级用户的密码已设置并存储在错误日志文件中。

要显示它,请使用以下命令:

shell> sudo grep 'temporary password' /var/log/mysqld.log

通过使用生成的临时密码登录并尽快更改root密码,并为超级用户帐户设置自定义密码:

shell> mysql -u root -p #Login to root user with some password

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 

第六种方案

如果问题仍然存在,请尝试强制更改通行证

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

设置新的MySQL root用户密码

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

停止MySQL服务器:

/etc/init.d/mysql stop

启动MySQL服务器并对其进行测试:

mysql -u root -p

第七种方案

密码丢失时会发生这种情况。

忘记密码时更改密码的步骤:

  1. 停止MySQL服务器(在Linux上):

    sudo systemctl stop mysql
    
  2. 在不加载授权表或启用网络的情况下启动数据库:

    sudo mysqld_safe --skip-grant-tables --skip-networking &
    

    该命令末尾的&符号将使此过程在后台运行,因此您可以继续使用终端并运行#mysql -u root,而不会要求输入密码。

    如果出现如下错误:

    2018-02-12T08:57:39.826071Z mysqld_safe UNIX套接字文件的目录’/var/run/mysqld’不存在。 mysql -u root错误2002(HY000):无法通过套接字’/var/run/mysqld/mysqld.sock'(2)[1] +出口1连接到本地MySQL服务器

  3. 制作MySQL服务目录。

    sudo mkdir /var/run/mysqld
    

    授予MySQL用户写入服务目录的权限。

    sudo chown mysql: /var/run/mysqld
    
  4. 在步骤2中运行相同的命令以在后台运行mysql。

  5. 运行mysql -u root,您将无需输入密码即可获得mysql控制台。

    运行这些命令

    FLUSH PRIVILEGES;
    

    对于MySQL 5.7.6及更高版本

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    

    对于MySQL 5.7.5及更高版本

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
    

    如果ALTER USER命令不起作用,请使用:

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

现在退出

  1. 停止手动启动的实例

    sudo kill `cat /var/run/mysqld/mysqld.pid`
    
  2. 重启mysql

    sudo systemctl start mysql
    

第八种方案

我遇到了这个非常烦人的问题,发现了许多无效的答案。我遇到的最好的解决方案是完全卸载mysql并re-install。在re-install上,您设置了root密码,从而解决了该问题。


sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

我在其他地方找到了此代码,因此我不认为它。但这有效。卸载后要安装mysql,我认为Digital Ocean上有很好的教程。为此检查我的要旨。 https://gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096

第九种方案

我正在使用Ubuntu-16.04:已安装mysql-5.7。我遇到了同样的问题:root用户的登录被拒绝。

尝试了以下步骤:

  1. dpkg --get-selections | grep mysql(获取mysql的版本)。

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

如果没有-p,则不会提示您输入密码。进入后,您可以按照以下步骤使用密码创建用户:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

从根目录退出,然后从上面给出的登录。

mysql -u <your_new_username> -p

由于某些原因,仅键入mysql仍然无法正常工作。完全没有我建议养成使用mysql -u <name> -p的习惯。

第十种方案

刚进入终端

mysql -u root -p。比它会询问密码

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10348.html,未经允许,请勿转载。