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


164

我想开始在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

3
您需要以具有权限的用户身份登录。至少root应在安装MySQL时创建。
derobert

在安装过程中,它告诉我设置密码,而我现在将其设置为root,该怎么办?
Nickool

9
您需要以root用户身份登录,例如,通过运行mysql -u root -p。然后,您将对数据库服务器具有完全权限,并且可以创建其他用户。
derobert 2012年

使用命令行登录时,请执行以下操作以root用户身份登录:mysql -u root -p
Travis 2012年

1
@nikparsa:不,您可以在shell提示符下而不是在mysql提示符下运行而不是'mysql'。
derobert 2012年

Answers:


219

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


我怎么能去bash?我在安装mysql时遇到了问题,请看这里superuser.com/questions/377679/…我只是在命令行中知道它
Nickool 2012年

6
使用“退出”退出mysql,然后您将进入bash
Nowhy,2012年

23
仅供参考,默认情况下,密码为空
bigpotato

如果我使用Windows怎么办?
PHPFan

退出或退出对我不起作用,请提供另一种方法。我在Windows 10上
Metin Dagcilar

46

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

在终端中输入:

mysqladmin -u root password 'root password goes here'

然后调用MySQL客户端:

mysql -h localhost -u root -p

1
这个对我有用,最初工作正常,然后突然停止工作一天。任何想法,为什么会首先发生?
mu无2014年

@soleshoe im出现错误:sudo:mysqladmin:找不到命令,请帮助我该怎么办?mysql在系统偏好设置中运行。
希塔斯

29

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

要查看您是哪个用户以及您拥有谁的权限,请执行以下操作:

select user(), current_user();

要删除讨厌的匿名用户:

drop user ''@'localhost';

1
即使我使用的是“ mysql -u username -p”,这也为我解决了问题。很奇怪:user()是我的用户名,但是current_user()是localhost ...不知道为什么吗?
ethanpil 2014年

2
@Leftteris嗨..我收到此错误:访问被拒绝;当我尝试删除用户“ @'localhost”时,您需要(至少其中一个)CREATE USER特权才能进行此操作;
希塔斯,2015年

15

这与用户权限有关。提供适当的赠款将解决这个问题。

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

注意:

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

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

步骤[4]:登录到新用户

$ mysql -uparsa -pyour_password

步骤[5]:创建数据库

mysql> create database `database_name`;

当我这样做时CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';出现错误:错误1227(42000):访问被拒绝;您需要(至少其中一个)创建用户权限才能执行此操作
飞机

您是否已使用root用户登录mysql客户端
theBuzzyCoder

9

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

mysql -h host -u root -p 

主机将在哪里 127.0.0.1

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

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


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

1
-p用于输入密码,您正在使用它来传递数据库名称。另外,对于密码,不应包含空格-p和实际密码。使用-D连接到特定的数据库。
sv。

5

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

现在,首先MySQL使用以下命令:

sudo mysql -u root -p

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

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

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


输入密码后,我得到“ sudo:mysql:找不到命令”,请帮我解决这个问题
Hitarth

它不应该是“ sudo:”,应该是“ sudo”……如果不是错字,我认为这就是问题所在。
Kshitij Mittal

2

@Nickparsa…您有2个问题:

1)。mysql -uroot -p 应该在bash(也称为终端)中键入,而不是在MySQL命令行中键入。您通过键入以下内容来解决此错误:

exit

在您的MySQL命令行中。现在您又回到了bash / terminal命令行。

2)。您有语法错误:

mysql -uroot -p; 

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

mysql -uroot -p

在bash命令行中输入正确的语法。如果设置了密码,请输入密码;否则,请输入密码。否则,只需按Enter键。您应该得到类似于以下内容的响应: 在此处输入图片说明

希望这可以帮助!


嗨,我赞扬此案后直接得到了弓屏。/ usr / local / mysql / bin / mysql,但是此后,当我尝试使用“ CREATE DATABASE书籍;”创建数据库时,出现错误:ERROR 1044(42000):用户``@'localhost'拒绝访问数据库'书”请帮助我
希塔斯,2015年

0

大多数开发人员登录到服务器(我假设您具有mysql数据库的用户名和密码),然后从Bash切换到mysql> prompt然后使用以下命令(该命令无效)

mysql -h localhost -u root -p

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

然后数据库,表可以一一创建

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


0

我上面的答案中的命令正确无误,我错过的是在工作台上,我们为用户提到了“主机的限制连接”,它默认为“%”-将其更改为“ localhost”,然后可以正常连接!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.