错误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) 

我该如何解决并继续?

默认的根密码是空的(即空string),而不是root 。 所以你可以login为:

 mysql -u root 

安装后你应该明显地改变你的root密码

 mysqladmin -u root password [newpassword] 

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

注意:对于MySQL 5.7+,请看@Lahiru对这个问题的回答。 这包含更多的最新信息。

我能够通过执行这个语句来解决这个问题

 sudo dpkg-reconfigure mysql-server-5.5 

这将改变根密码。

你必须重置密码! mac osx(testing和工作)和Ubuntu的步骤

停止使用MySQL

 sudo service mysql stop 

要么

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

以安全模式启动它:

 $ sudo mysqld_safe --skip-grant-tables 

(上面的行是整个命令)

这将是一个持续的命令,直到这个过程完成,打开另一个shell /terminal窗口,login没有密码:

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

启动MySQL使用:

 sudo service mysql start 

要么

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

你的新密码是“密码”。

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

 /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服务器并testing它:

 mysql -u root -p 

我使用Ubuntu-16.04:安装了mysql – 5.7。 我有同样的问题:login被拒绝的根用户。

试过以下步骤:

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

2. dpkg-reconfigure mysql-server-5.7

3. mysql -u root -p

没有-p,不会提示你要求密码。 一旦进入,您可以通过以下步骤创build一个使用密码的用户:

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

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

从根目录退出并从上面给出的login。

mysql -u <your_new_username> -p

由于某些原因,仍然只是inputMySQL不起作用。 全部。 我build议使它成为使用mysql -u -p的习惯

在服务器的初始启动时,会发生下列情况,因为服务器的数据目录是空的:

  • 服务器已初始化。
  • 在数据目录中生成SSL证书和密钥文件。
  • validate_password插件已安装并启用。
  • 超级用户帐户“root”@“localhost”被创build。 超级用户的密码被设置并存储在错误日志文件中。

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

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

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

 shell> mysql -uroot -p mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 

请阅读官方文档: Mysql:如何重置根密码

如果您有权访问terminal:

MySQL 5.7.6及更高版本:

 $ mysql mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; 

MySQL 5.7.5及更早版本:

 $ mysql mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass'); 

我遇到了这个非常恼人的问题,发现许多没有奏效的答案。 我遇到的最好的解决scheme是完全卸载MySQL并重新安装它。 在重新安装你设置一个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我觉得数字海洋有一个很好的教程。 检查我的要点为此。
https://gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096

只是一条线,它解决了我的问题。

 sudo dpkg-reconfigure mysql-server-5.5 

我在Mac OSX中使用mysql-5.7.12-osx10.11-x86_64.dmg

安装过程会自动为root用户设置一个临时密码。 你应该保存密码。 密码无法恢复。

按照说明

  1. 转到cd /usr/local/mysql/bin/
  2. input临时密码(看起来像“tsO07JF1 => 3”)
  3. 你应该得到mysql>提示符。
  4. 运行, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}'); 如果你想设置你的密码:“root”,那么这个命令就是SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  5. 运行ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  6. 运行exit
  7. 运行./mysql -u root -p
  8. input您的密码。 在我的情况下,我会键入,“根”(不引用)
  9. 就这样。

为了方便起见,你应该在你的PATH中添加"/usr/local/mysql/bin"

现在你可以在任何地方input./mysql -u root -p然后input密码,你将得到mysql>提示符。

希望它有帮助。

默认密码是空的,所以你必须通过以下步骤来更改密码。

连接到MySQL

根#mysql

使用mysql

mysql> update user set password = PASSWORD('root')其中User ='root'; 最后重新加载权限:

mysql>刷新权限; mysql>退出

在最近的MySQL版本中, mysql.user表中没有password

所以你需要执行ALTER USER 。 把这一行命令放到文件中。

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

并将其作为init文件执行(以root用户或mysql用户身份)

 mysqld_safe --init-file=/home/me/mysql-init & 

MySQL服务器需要停止启动mysqld_safe

此外,apparmor权限可能会加载此init文件的问题。 在这里阅读更多https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql

在Ubuntu 16.04(MySQL版本5.7.13)中,我能够通过以下步骤解决问题:

  1. 按照B.5.3.2.2重置根密码:Unix和类Unix系统MySQL 5.7参考手册中的说明操作

  2. 当我尝试#sudo mysqld_safe –init-file = / home / me / mysql-init时,它失败了。 错误在/var/log/mysql/error.log

    2016-08-10T11:41:20.421946Z 0 [注]启动init_file'/ home / me / mysql / mysql-init'的执行。 / usr / sbin / mysqld:找不到文件'/ home / me / mysql / mysql-init'(Errcode:13 – Permission denied)2016-08-10T11:41:20.422070Z 0 [错误] 41:20.422096Z 0 [错误]正在中止

mysql-init的文件权限不是问题,需要编辑apparmor权限

  1. 编辑#sudo vi /etc/apparmor.d/usr.sbin.mysqld

     .... /var/log/mysql/ r, /var/log/mysql/** rw, # Allow user init file /home/pranab/mysql/* r, # Site-specific additions and overrides. See local/README for details. #include <local/usr.sbin.mysqld> } 
  2. 执行#sudo /etc/init.d/apparmor重新加载

  3. 再次启动mysqld_safe,尝试上面的第2步。 检查/var/log/mysql/error.log确保没有错误,mysqld已成功启动

  4. 运行#mysql -u root -p

    input密码:

input您在mysql-init中指定的密码。 您现在应该能够以root身份login。

  1. 通过#sudoclosuresmysqld_safe mysqladmin -u root -pclosures

  2. 以#sudo systemctl启动mysql启动mysqld正常的方式

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

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

 /etc/init.d/mysql stop 

停止MySQL服务器(在Mac OS X上):

 mysql.server stop 

用–skip-grant-tables启动mysqld_safe守护进程

 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服务器(在Linux上):

 /etc/init.d/mysql stop 

停止MySQL服务器(在Mac OS X上):

 mysql.server stop 

启动MySQL服务器服务并testing以root身份login:

 mysql -u root -p