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