用户“root”@“localhost”访问被拒绝(使用密码:YES)-没有权限?

问题描述 投票:0回答:5

我不断收到此错误。

我正在使用 mySQL Workbench,我发现 root 的架构权限为空。根本没有任何特权。

我在使用我的服务器的各个平台上遇到问题,而且这是一个突然出现的问题。

[电子邮件受保护]显然有很多访问权限,但我是这样登录的,但它只是分配给本地主机 - 本地主机没有特权。

我做了一些事情,例如

FLUSH HOSTS
FLUSH PRIVILEGES
等 但没有从那里或互联网上找到成功。

如何才能恢复 root 访问权限?我觉得这很令人沮丧,因为当我环顾四周时,人们希望你“有访问权限”,但我没有访问权限,所以我无法进入命令行或任何东西,

GRANT
我自己也无法进行任何操作。

跑步时

SHOW GRANTS FOR root
这就是我得到的回报:

错误代码:1141。没有为用户“root”定义此类授权 主机'%'

mysql root mysql-workbench workbench
5个回答
285
投票

如果您在 MySql 5.7.+ 中遇到同样的问题:

Access denied for user 'root'@'localhost'

这是因为MySql 5.7默认允许使用socket连接,这意味着你只需使用

sudo mysql
连接即可。如果你运行 sql :

SELECT user,authentication_string,plugin,host FROM mysql.user;

然后你就会看到它:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

要允许使用 root 和密码连接,然后使用命令更新表中的值:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';
FLUSH PRIVILEGES;

然后再次运行 select 命令,你会看到它已经改变了:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *2F2377C1BC54BE827DC8A4EE051CBD57490FB8C6 | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

就是这样。您可以在运行并完成

sudo mysql_secure_installation
命令后运行此过程。

对于 mariadb,请使用

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

设置密码。 更多信息请访问 https://mariadb.com/kb/en/set-password/


67
投票

使用 重置 root 密码的说明 - 但我们不会重置 root 密码,而是将强制将一条记录插入 mysql.user 表中

在初始化文件中,使用这个代替

INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD'));
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;

65
投票

它不喜欢我的用户权限,所以我须做它。 (在bash中<< sudo set user and password) (this gives username of root and sets the password to nothing) (On Mac)

sudo mysql -uroot -p

35
投票

尝试以下命令

~$ sudo /etc/init.d/mysql stop
~$ sudo mysqld_safe --skip-grant-tables &
~$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

mysql> use mysql;

mysql> update user set password=PASSWORD("root") where User='root';

mysql> flush privileges;

mysql> quit

~$ sudo /etc/init.d/mysql stop

Stopping MySQL database server: mysqld

STOPPING server from pid file /var/run/mysqld/mysqld.pid

mysqld_safe[6186]: ended

[1]+  Done                    mysqld_safe --skip-grant-tables

~$ sudo /etc/init.d/mysql start

~$ mysql -u root -p

* MySQL Community Server 5.6.35 is started
~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

28
投票

对于在 mysql 5.7+ 版本中面临以下错误的人 -

Access denied for user 'root'@'localhost' (using password: YES)
  1. 打开新终端

  2. sudo /etc/init.d/mysql stop
    ... MySQL 社区服务器 5.7.8-rc 已停止

  3. sudo mysqld_safe --skip-grant-tables &
    这将跳过所有授予级别的权限并以安全模式启动 mysql 有时过程会因为

  4. 而卡住

grep:写入错误:管道损坏 180102 11:32:28 mysqld_safe 记录到“/var/log/mysql/error.log”。

只需按 Ctrl+Z 或 Ctrl+C 即可中断并退出进程

  1. mysql -u root

欢迎使用 MySQL 监视器。 命令以 ; 结尾或\g。 你的 MySQL 连接 ID 是 2 服务器版本:5.7.8-rc MySQL 社区服务器(GPL)

版权所有 (c) 2000、2015,Oracle 和/或其附属公司。保留所有权利。

Oracle 是 Oracle Corporation 和/或其公司的注册商标 附属机构。其他名称可能是其各自的商标 业主。

输入“帮助”;或“\h”寻求帮助。类型

© www.soinside.com 2019 - 2024. All rights reserved.