错误 1044 (42000): 拒绝用户 ''@'localhost' 访问数据库 'db'

Posted

技术标签:

【中文标题】错误 1044 (42000): 拒绝用户 \'\'@\'localhost\' 访问数据库 \'db\'【英文标题】:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'db'错误 1044 (42000): 拒绝用户 ''@'localhost' 访问数据库 'db' 【发布时间】:2012-02-08 23:02:51 【问题描述】:

我想开始在 mysql 中编写查询。

show grants 显示:

+--------------------------------------+
| Grants for @localhost                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+

我没有任何用户ID,但是当我想创建一个用户时,我没有权限,即使我没有一个用户,我也不知道如何创建权限!

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'parsa';
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER pr
ivilege(s) for this operation

我尝试以 root 身份登录:

mysql> mysql -u root -p;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p' at line 1
mysql> mysql -u root -p root;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p root' at line 1

【问题讨论】:

您需要以具有权限的用户身份登录。安装 MySQL 时至少应该创建 root 在安装过程中它告诉我设置密码,我现在将它设置为 root 我该怎么办? 您需要以 root 身份登录——例如,通过运行mysql -u root -p。然后您将拥有数据库服务器的完全权限,并且您可以创建其他用户。 使用命令行登录时,以root身份登录:mysql -u root -p @nikparsa:不,你应该运行它而不是 'mysql'——从 shell 提示符,而不是 mysql 提示符。 【参考方案1】:

不,您应该在 bash 中运行 mysql -u root -p,而不是在 MySQL 命令行中。 如果您在 mysql 中,您可以通过键入 exit 退出。

【讨论】:

我怎样才能去 bash?我在安装 mysql 时遇到问题,请看这里 superuser.com/questions/377679/… 我只知道在命令行中了解它 使用'quit'退出mysql,然后你将进入bash 仅供参考,默认密码为空 如果我使用的是 windows 怎么办? exit 或 quit 对我不起作用,请提供另一种方式。我在 Windows 10 上【参考方案2】:

您可能需要为您的 MySQL 数据库设置一个 root 帐户:

在终端类型中:

mysqladmin -u root password 'root password goes here'

然后调用 MySQL 客户端:

mysql -h localhost -u root -p

【讨论】:

这个对我有用,最初工作正常,然后有一天突然停止工作。任何想法,为什么会发生这种情况? @soleshoe 我收到错误:sudo: mysqladmin: command not found 请帮帮我我该怎么办?? mysql 已经在系统偏好设置中运行。 我得到:mysqladmin:无法关闭日志记录;错误:'访问被拒绝;您需要(至少其中一项)超级权限才能执行此操作'【参考方案3】:

我是被另一个问题带到这里的。 每当我尝试登录时,我都会收到该消息,因为我没有正确验证身份,而是以匿名用户身份登录。我的问题的解决方案是:

查看您是哪个用户,以及您拥有谁的权限:

select user(), current_user();

删除讨厌的匿名用户:

drop user ''@'localhost';

【讨论】:

这解决了我的问题,即使我使用的是“mysql -u username -p”。很奇怪:user() 是我的用户名,但 current_user() 是 localhost...不知道为什么? @Leftteris hi .. 我收到这个错误:访问被拒绝;当我尝试删除用户''@'localhost'时,您需要(至少一个)CREATE USER 权限; +-----------------+----------------+ |用户() |当前用户() | +-----------------+----------------+ | fantomx1@localhost | @本地主机 | +-----------------+----------------+ | thx,我知道了,当匿名用户存在时,即使他们有密码但他们的密码无效,但他们没有权限,甚至没有任何不存在的经过深思熟虑的字符串 user 'sdasdsa,我也可以使用没有密码的任何现有用户登录',但当前用户始终是匿名的,删除他后它开始工作 此站点提供有关如何删除匿名用户的信息。 download.nust.na/pub6/mysql/doc/refman/5.1/en/…【参考方案4】:

这与用户权限有关。给予适当的资助将解决这个问题。

步骤 [1]:打开终端并运行此命令

$ mysql -uroot -p

输出 [1]: 这应该会给你下面显示的 mysql 提示

步骤[2]:

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';
mysql> grant all privileges on *.* to 'parsa'@'localhost';

语法:

mysql> grant all privileges on `database_name`.`table_name` to 'user_name'@'hostname';

注意:

hostname可以是IP地址、localhost、127.0.0.1 在database_name/table_name中,*表示所有数据库 在hostname,指定所有主机使用'%'

步骤[3]:通过输入quit/exit命令或按Ctrl+D退出当前的mysql提示。

步骤 [4]:登录新用户

$ mysql -uparsa -pyour_password

步骤[5]:创建数据库

mysql> create database `database_name`;

【讨论】:

当我执行CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password'; 时出现错误:ERROR 1227 (42000): Access denied;您需要(至少一个)此操作的 CREATE USER 权限 你是否使用root用户登录过mysql客户端 这解决了我的问题:grant all privileges on *.* to 'parsa'@'%';。我正在使用 docker-compose,有没有办法可以在构建后传递此命令? 我将现有数据库从 phpmyadmin xampp 迁移到 mysql 时遇到了同样的问题。这终于适用于我的 node.js mysql 应用程序 这是该主题的最佳答案!【参考方案5】:

您可能想尝试完整的登录命令:

mysql -h host -u root -p 

主机是127.0.0.1

这样做只是为了确保合作存在。

使用mysql -u root -p 允许我进行大量数据库搜索,但由于路径设置而拒绝任何数据库创建。

【讨论】:

【参考方案6】:

如果您在 MySQL shell 中,请键入 exit 退出它,这将使您返回到命令提示符。

现在使用以下命令启动MySQL

sudo mysql -u root -p

如果您的用户名不是 root,请将上述命令中的“root”替换为您的用户名:

sudo mysql -u <your-user-name> -p

然后它会询问您MySQL 帐户/密码,然后您的MySQL 将不会显示任何访问权限问题。

【讨论】:

输入密码后我得到“sudo: mysql: command not found”请帮帮我 它不应该是“sudo:”,应该是“sudo”……如果不是拼写错误,我认为这就是问题所在。【参考方案7】:

首先,如果您不熟悉命令行,请尝试在您的网络浏览器中使用 phpmyadmin。这将确保您确实创建了一个 mysql 数据库和一个用户名。

这是从命令行 (bash) 连接的方式:

mysql -h hostname -u username -p database_name

例如:

fabio@crunchbang ~ $ mysql -h 127.0.0.1 -u fabio -p fabiodb

【讨论】:

-p 用于密码,您正在使用它来传递数据库名称。此外,对于密码,不应有空格 b/w -p 和实际密码。使用-D 连接到特定数据库。【参考方案8】:

@Nickparsa ......你有 2 个问题:

1)。 mysql -uroot -p 应该在 bash(也称为终端)中输入,而不是在 MySQL 命令行中。您可以通过键入

来修复此错误
exit

在您的 MySQL 命令行中。现在你回到了你的 bash/终端命令行。

2)。你有一个语法错误:

mysql -uroot -p; 

-p前面的分号需要去掉。正确的语法是:

mysql -uroot -p

在 bash 命令行中键入正确的语法。如果您设置了密码,请输入密码;否则只需点击输入按钮。您应该得到与此类似的响应:

希望这会有所帮助!

【讨论】:

您好,我在发布此推荐后直接获得了弓屏。 /usr/local/mysql/bin/mysql 但之后当我尝试使用“CREATE DATABASE books;”创建数据库时,我收到错误:错误 1044 (42000): 用户'@'localhost' 拒绝访问数据库'书籍'请帮助我【参考方案9】:

用 sudo 连接 mysql 并为必要的用户提供使用权限,

sudo mysql -u user;
GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'localhost';

【讨论】:

【参考方案10】:

大多数开发人员 登录到服务器(我假设你有 mysql 数据库的用户名和密码)然后从 Bash 他们切换到 mysql&gt; prompt 然后使用下面的命令(这不不工作

mysql -h localhost -u root -p

需要做的是在 bash 提示符中使用上述命令--> 这样做会要求输入密码,如果给出它会直接进入 mysql 提示符,并且

然后数据库、表可以一张一张地创建

我遇到了类似的僵局,所以分享经验

【讨论】:

【参考方案11】:

根据上述答案,我的命令是正确的,我错过的是在工作台上,我们为用户提到了“限制来自主机的连接”,它默认为“%” - 将其更改为“localhost”并连接以后就好了!

【讨论】:

以上是关于错误 1044 (42000): 拒绝用户 ''@'localhost' 访问数据库 'db'的主要内容,如果未能解决你的问题,请参考以下文章

错误 1044 拒绝用户 ''@'localhost' 访问数据库

错误 #1044 - 用户 'root'@'localhost' 拒绝访问数据库 'information_schema' [关闭]

[故障解决]Mysql爆出ERROR 1044 (42000)的错误怎么办?

mysqldump:出现错误:1044:使用 LOCK TABLES 时用户 'username'@'localhost' 对数据库 'databasename' 的访问被拒绝

ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

ERROR 1044 (42000): Access denied for user ‘root‘@‘localhost‘