ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'db'
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'db'
我想开始在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 privilege(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的过程中,有时会遇到如下错误信息:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'db'。这个错误的原因是访问数据库时,用户权限不足或者用户名和密码不正确。下面我们来看一下解决这个问题的方法。
首先,我们需要确保使用正确的用户名和密码。在命令行中输入 mysql -u 用户名 -p
,然后输入密码进行登录。如果密码为空,则直接按回车键即可。
如果用户权限不足,我们需要授予该用户访问数据库的权限。可以使用以下命令来授予用户权限:
GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'localhost';
FLUSH PRIVILEGES;
这样,用户就可以使用指定的用户名和密码来访问数据库了。
另外,在Windows系统下,退出MySQL的方法略有不同。在命令行中输入 exit
或者 quit
即可退出MySQL。
如果 exit
或者 quit
命令无法生效,可能是因为您还在输入命令,MySQL将其解释为命令的一部分而不是退出命令。这种情况下,可以尝试在命令行中输入分号并按回车键来终止命令,然后下一行应该以 mysql>
开头而不是 ->
,这样退出命令才会生效。
另外,您也可以尝试使用 ctrl+d
快捷键来退出MySQL。
总结起来,要解决 ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'db' 这个问题,首先需要确保使用正确的用户名和密码,并授予该用户访问数据库的权限。对于Windows系统,可以使用 exit
或者 quit
命令退出MySQL,或者使用 ctrl+d
快捷键。
问题原因:访问被拒绝,可能是由于没有给用户授予对数据库的访问权限所致。
解决方法:设置一个MySQL数据库的root账户,并授予其对数据库的访问权限。
具体步骤如下:
1. 在终端中输入以下命令设置root账户的密码:
mysqladmin -u root password 'root密码'
2. 使用以下命令调用MySQL客户端:
mysql -h localhost -u root -p
这个方法适用于我,初始时工作正常,但突然有一天停止工作了。为什么会发生这种情况呢?
我遇到了以下错误:sudo: mysqladmin: command not found,请问我该怎么办?MySQL已在系统偏好设置中运行。
我得到以下错误:mysqladmin: Can't turn off logging; error: 'Access denied; you need (at least one of) the SUPER privilege(s) for this operation'。
(ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'db')
在登录时出现了上述错误,这是因为我以匿名用户的身份登录而没有正确进行身份验证。解决方法如下:
首先,可以通过以下命令查看当前用户和其权限:
select user(), current_user();
然后,可以通过以下命令删除匿名用户:
drop user ''@'localhost';
这种方法解决了我的问题,即使我使用的是"mysql -u username -p"命令。非常奇怪的是,user()返回的是我的用户名,但current_user()却是localhost...不知道为什么。
另外,有用户反馈在尝试删除用户''@'localhost'时,出现了"Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation"错误。解决方法是在删除之前先授予相应的权限。
这个网站提供了关于如何删除匿名用户的信息:download.nust.na/pub6/mysql/doc/refman/5.1/en/…