4

我想在 MySql 中创建一个新用户。我不希望那个新用户对我现有的数据库做太多事情[我只想授予他选择权限],但他可以用他创建的新数据库做任何事情。

首先,有没有办法根据数据库所有者授予权限?如果有可能,那么这就是我正在寻找的理想之选。如果没有,那么我如何限制特定用户仅访问 [only Select privilege] 某些特定数据库,允许他对其余数据库做任何他想做的事情?

4

4 回答 4

17

来自 MySQL授权文档

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT SELECT ON *.* TO 'jeffrey'@'localhost';
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';

第一个命令创建用户。第二个授权选择所有数据库和表。第三个命令授予对 db1 中所有表的所有访问权限。

你还有什么具体要做的吗?

于 2012-07-02T20:19:20.147 回答
3

要为特定用户提供权限,您可以使用此框架:

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’; 
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

此命令中的星号(分别)表示他们可以访问的数据库和表——此特定命令允许用户读取、编辑、执行和执行所有数据库和表中的所有任务。

完成要为新用户设置的权限后,请务必重新加载所有权限。

 FLUSH PRIVILEGES;

有关权限的更多信息,您可以阅读这篇文章 https://www.digitalocean.com/community/articles/how-to-create-a-new-user-and-grant-permissions-in-mysql

有关权限列表,请参阅 MySQL 手册页MySQL 提供的权限

于 2014-05-13T11:42:14.403 回答
1

打开 mysql 命令提示符。

要在主机为 localhost 时创建新用户,请使用此命令

CREATE user 'test_user'@'localhost' identified by 'some_password';

对于任何主机使用%,像这样

CREATE user 'test_user'@'%' identified by 'some_password';

创建用户后,您需要授予一些访问权限。为此使用以下命令。

GRANT SELECT,INSERT,UPDATE
ON database_name.table_name
TO 'test_user'@'localhost';

成功执行上述查询后,test_user 可以在 database_name(数据库名称)的 table_name(表名称)中进行选择、插入和更新。

于 2014-08-24T11:53:49.797 回答
-2

grant privilege在这样的数据库中给出

grant privilege on object to user

object是任何数据库表或关系,并且user可能是向他提供特权的人。

例子

grant select,insert,update,on object name to user name

grant select on employee to john with grant option;

revoke delete on employee from john.
于 2016-06-08T14:33:24.680 回答