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

时间:2012-01-12 16:44:00

标签: mysql

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

show grants显示:

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

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

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

12 个答案:

答案 0 :(得分:204)

不,你应该在bash中运行mysql -u root -p,而不是在MySQL命令行。 如果你在mysql中,可以输入退出

退出

答案 1 :(得分:44)

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

在终端类型中:

mysqladmin -u root password 'root password goes here'

然后调用MySQL客户端:

mysql -h localhost -u root -p

答案 2 :(得分:27)

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

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

select user(), current_user();

删除讨厌的匿名用户:

drop user ''@'localhost';

答案 3 :(得分:8)

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

mysql -h host -u root -p 

其中主机为127.0.0.1

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

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

答案 4 :(得分:7)

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

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

$ mysql -uroot -p

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

enter image description here

步骤[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`;

答案 5 :(得分:6)

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

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

mysql -h hostname -u username -p database_name

例如:

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

答案 6 :(得分:5)

如果你在mysql shell中,请输入退出退出。它将返回到命令提示符。 现在使用以下命令启动mysql:

sudo mysql -u root -p

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

sudo mysql -u your-user-name -p

然后它将询问您mysql-account-password,并且您的mysql将不会显示任何访问权限问题。

答案 7 :(得分:1)

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

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

来修复此错误
exit
在MySQL命令行中

。现在,您回到了bash / terminal命令行。

2)。您有语法错误:

mysql -uroot -p; 

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

mysql -uroot -p

在bash命令行中输入正确的语法。如果您有一个设置,请输入密码;否则只需按下回车键。您应该得到类似于此的响应: enter image description here

希望这有帮助!

答案 8 :(得分:1)

如果要从Linux启动mysql,可以通过点击mysql -u root -p来轻松完成 如果您在Windows上,则必须从终端点击:mysql -u root -p

在file.exe位置mysql.exe位置。

答案 9 :(得分:1)

使用 sudo 连接 mysql 并授予必要用户使用权限,

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

答案 10 :(得分:0)

大多数开发人员登录服务器(我假设您拥有mysql数据库的用户名和密码)然后从Bash切换到mysql> prompt然后使用下面的命令(不起作用

mysql -h localhost -u root -p

需要做的是在bash提示符中使用上面的命令 - >这样做会询问密码,如果给出它将直接进入mysql提示符和

然后数据库,表可以逐个创建

我面临类似的僵局,所以分享经验

答案 11 :(得分:0)

我的命令是正确的,每个上面的答案,我错过的是在Workbench上,我们提到用户的'限制来自主机的连接',默认为“%” - 将其更改为“localhost”并连接此后很好!