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

Nic*_*ool 152 mysql

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

show grants 说明:

+--------------------------------------+
| Grants for @localhost                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+
Run Code Online (Sandbox Code Playgroud)

我没有任何用户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
Run Code Online (Sandbox Code Playgroud)

我试图以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
Run Code Online (Sandbox Code Playgroud)

Now*_*why 210

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

  • FYI默认密码为空 (23认同)
  • 使用'quit'退出mysql,然后你将进入bash (6认同)

sol*_*hoe 45

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

在终端类型中:

mysqladmin -u root password 'root password goes here'
Run Code Online (Sandbox Code Playgroud)

然后调用MySQL客户端:

mysql -h localhost -u root -p
Run Code Online (Sandbox Code Playgroud)

  • 这个对我有用,它最初工作正常,然后有一天突然停止工作。任何想法,为什么首先会发生这种情况? (2认同)

Lef*_*s E 28

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

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

select user(), current_user();
Run Code Online (Sandbox Code Playgroud)

删除讨厌的匿名用户:

drop user ''@'localhost';
Run Code Online (Sandbox Code Playgroud)

  • 即使我使用的是“mysql -u username -p”,这也为我解决了问题。很奇怪:user() 是我的用户名,但 current_user() 是 localhost...不知道为什么? (2认同)
  • @Leftteris嗨..我收到此错误:访问被拒绝;当我尝试删除用户``@'localhost'时,您需要(至少一个)CREATE USER特权才能进行此操作; (2认同)

the*_*der 11

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

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

$ mysql -uroot -p
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

第2步]:

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';
mysql> grant all privileges on *.* to 'parsa'@'localhost';
Run Code Online (Sandbox Code Playgroud)

句法:

mysql> grant all privileges on `database_name`.`table_name` to 'user_name'@'hostname';
Run Code Online (Sandbox Code Playgroud)

注意:

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

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

步骤[4]:登录您的新用户

$ mysql -uparsa -pyour_password
Run Code Online (Sandbox Code Playgroud)

步骤[5]:创建数据库

mysql> create database `database_name`;
Run Code Online (Sandbox Code Playgroud)

  • 当我执行 `CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';` 时出现错误:错误 1227 (42000): 访问被拒绝;您需要(至少一项)CREATE USER 权限才能执行此操作 (2认同)

小智 8

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

mysql -h host -u root -p 
Run Code Online (Sandbox Code Playgroud)

主持人将在哪里127.0.0.1.

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

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


Kau*_*sam 8

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

sudo mysql -u user;
GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'localhost';
Run Code Online (Sandbox Code Playgroud)


fab*_*iog 6

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

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

mysql -h hostname -u username -p database_name
Run Code Online (Sandbox Code Playgroud)

例如:

fabio@crunchbang ~ $ mysql -h 127.0.0.1 -u fabio -p fabiodb
Run Code Online (Sandbox Code Playgroud)


Ksh*_*tal 5

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

sudo mysql -u root -p

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

sudo mysql -u your-user-name -p

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