错误 1045 (28000):用户 'username'@'%' 被拒绝访问(使用密码:YES)

3

我在我的CentOS 6.4服务器上安装了MySQL。我登录为root用户并更改了它的密码。

后来,我想创建一个新用户并将其作为我的默认用户,所以我使用以下命令创建了一个名为golden的新用户:

CREATE USER 'golden'@'%' IDENTIFIED BY 'password';

然后我向用户 golden 应用了权限:

GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';

FLUSH PRIVILEGES;

现在这个用户:golden可以做任何事情。所以我最终删除了root用户。现在我卡在了给我的另一个新用户授权上。

我创建了另一个用户,当我通过golden登录时(此时我已成功删除了root用户并命令成功创建了新用户,我也能看到它在列表中)

CREATE USER 'fashion'@'%' IDENTIFIED BY 'password';

接下来的以下命令会导致错误:

GRANT ALL PRIVILEGES ON *.* TO 'fashion'@'%';

错误: 错误1045(28000):用户'golden' @'%'被拒绝访问(使用密码:YES)

我还尝试了以下命令,结果如下:

mysql> SELECT USER(),CURRENT_USER();
+------------------+----------------+
| USER()           | CURRENT_USER() |
+------------------+----------------+
| golden@localhost | golden@%       |
+------------------+----------------+

如果我不能给这个用户访问权限,那么该怎么登录和使用数据库呢?请帮忙。

编辑1:以下命令给出以下结果

mysql> select user, host FROM mysql.user;
+------------+-------+
| user       | host  |
+------------+-------+
| golden     | %     |
| fashion    | %     |
+------------+-------+

你的 MySQL 中一共有多少用户存在? - Jhanvi
@Jhanvi 我已经完成了编辑,请检查。 - Django Anonymous
3个回答

6
首先,我不明白你删除root用户的原因。但回到问题上,你应该指定WITH GRANT OPTION,像这样:
(但是,在重新安装mysql之前最好选择此选项,因为如果您没有root访问权限且用户也没有足够的权限,则最好重新开始安装过程并按照以下定义的方式创建用户并授予它们权限)
示例代码如下:
mysql> create user 'golden'@'localhost' identified by 'password'; Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on *.* to golden@localhost with grant option; Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
然后执行以下代码:
mysql> select current_user(); +------------------+ | current_user() | +------------------+ | golden@localhost | +------------------+ 1 row in set (0.00 sec)
mysql> create database testing; Query OK, 1 row affected (0.03 sec)
mysql> grant all privileges on testing.* to test; Query OK, 0 rows affected (0.02 sec)
mysql> drop database testing; Query OK, 0 rows affected (0.12 sec)
-但是请三思而后行,再次确认是否要删除root用户。

但是现在我只以用户“golden”的身份登录。那么现在我该如何执行它呢?因为我没有“root”权限。 - Django Anonymous
不行。重新安装MySQL服务器实例似乎是最简单的解决方案。因此,如果您不确定,请不要做任何事情。 root 通常是系统用户。可以在没有它的情况下进行配置,但不建议这样做。 - Alma Do
好的,我希望能够这样做。无论如何,感谢你的时间和努力。重新安装似乎是最好的选择。 - Django Anonymous

2

你尝试过这个吗?

update mysql.user set grant_priv='Y' where user='golden';
flush privileges;

然后退出当前用户,再以golden用户重新连接到数据库。


0

解决这个问题最简单的方法是:

1.进入控制面板,将隐藏的文件和文件夹设置为可见(如果之前没有设置过)。 2.现在进入C盘并打开一个名为“program data”的隐藏文件夹。 3.搜索mysql文件夹并删除它。 4.卸载mysql 5.1。 5.使用向导重新安装它。 它会要求您输入新密码.. :)享受吧


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接