在mysql中,设置连接mysql命令行的权限

在mysql中,设置连接mysql命令行的权限,mysql,mysql-management,Mysql,Mysql Management,通过mysql管理员创建用户,但无法登录mysql命令行 以下是根发布的在线建议 grant all on *.* to new_user; 它起作用了,但是安全方面的问题是一团糟,所以发布了 revoke all on *.* from new_user; 现在,新用户仍然可以连接,但安全性在mysql管理员中是正常的 对我来说,这完全是胡说八道。到底发生了什么,如何真正启用登录 这似乎是MySQL管理员的问题(谢谢@marco)。如果在mysql命令行下发相同的授权,用户可以登录;但如果

通过mysql管理员创建用户,但无法登录
mysql
命令行

以下是根发布的在线建议

grant all on *.* to new_user;
它起作用了,但是安全方面的问题是一团糟,所以发布了

revoke all on *.* from new_user;
现在,新用户仍然可以连接,但安全性在mysql管理员中是正常的

对我来说,这完全是胡说八道。到底发生了什么,如何真正启用登录

这似乎是MySQL管理员的问题(谢谢@marco)。如果在mysql命令行下发相同的授权,用户可以登录;但如果授权是在管理员中颁发的,则用户无法登录


正如@marco所指出的,任何访问都会授予用户mysql登录权限,例如选择权限,但它们需要在msql命令行中输入。

这是因为当您第一次使用
grant
时,用户是自动创建的;当您撤销特权时,用户仍然…
看看这个

首先,您应该只给用户真正需要的特权。
第二:仅允许用户访问他应该查看/处理的数据库或表。
例如:

编辑:
为了证明我的话:
进入mysql控制台(
mysql-u root-p
)并键入

您将看到MySql中的用户。

好吧,现在对一个还不存在的用户使用
GRANT
;然后重复
SELECT*FROM user:您将看到创建的新用户

这是因为当您第一次使用
GRANT
时,用户是自动创建的;当您撤销特权时,用户仍然…
看看这个

首先,您应该只给用户真正需要的特权。
第二:仅允许用户访问他应该查看/处理的数据库或表。
例如:

编辑:
为了证明我的话:
进入mysql控制台(
mysql-u root-p
)并键入

您将看到MySql中的用户。

好吧,现在对一个还不存在的用户使用
GRANT
;然后重复
SELECT*FROM user:您将看到创建的新用户

以为用户是在MySQL管理员中创建的。当然,那里的priv设置是正确的。还认为
create user
用于创建user@cc杨:是的,您可以使用
create user
创建用户;无论如何,当您使用
GRANT
时,如果用户存在,将为其分配权限,否则将创建用户并分配权限。试着猜猜:)谢谢你的澄清。但是,
grant all on*.
让用户可以登录到哪里呢?例如,尝试在*.
上授予使用权,但不允许用户登录。@cc_young:read and。其中之一是:使用权限说明符代表“无权限”。它与GRANT一起在全局级别使用,用于修改帐户属性,如资源限制或SSL特征,而不影响现有帐户权限。认为用户是在MySQL Administrator中创建的。当然,那里的priv设置是正确的。还认为
create user
用于创建user@cc杨:是的,您可以使用
create user
创建用户;无论如何,当您使用
GRANT
时,如果用户存在,将为其分配权限,否则将创建用户并分配权限。试着猜猜:)谢谢你的澄清。但是,
grant all on*.
让用户可以登录到哪里呢?例如,尝试在*.
上授予使用权,但不允许用户登录。@cc_young:read and。使用权限说明符代表“无权限”。它与GRANT一起在全局级别使用,用于修改帐户属性,如资源限制或SSL特征,而不影响现有帐户权限。请在serverfault.com上尝试。您没有提供有关如何在serverfault.com上建立连接的基本信息。您没有提供有关如何建立连接的基本信息
GRANT SELECT,INSERT,UPDATE ON mydb.* TO 'jeffrey'@'localhost';
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost' 
IDENTIFIED BY PASSWORD 'sdsd';
USE mysql;
SELECT * FROM user;