我们如何授予MySQL用户特权?

我们需要向创建的新用户授予特权,因为新用户将没有特权。我们可以使用GRANT语句向用户帐户授予特权。它的语法如下-

语法

GRANT privilege,[privilege],.. ON privilege_level
TO user [IDENTIFIED BY password]
[REQUIRE tsl_option]
[WITH [GRANT_OPTION | resource_option]];

上面语法的解释如下-

首先,在GRANT关键字之后指定一个或多个特权。如果我们授予用户多个特权,则每个特权都用逗号分隔。

接下来,指定privilege_level,该特权确定用于应用特权的级别。MySQL支持全局(*。*),数据库(database。*),表(database.table)和列级别。如果使用列特权级别,则必须在每个特权之后指定一个或逗号分隔的列列表。

然后,放置我们要授予特权的用户。如果用户已经存在,则GRANTstatement修改其特权。否则,GRANT语句将创建一个新用户。可选的子句IDENTIFIED BY允许我们为用户设置新密码。

之后,我们指定用户是否必须通过安全连接(例如SSL,X059等)连接到数据库服务器。

最后,可选的WITH GRANT OPTION子句允许我们授予其他用户或从其他用户中删除我们拥有的特权。另外,我们可以使用WITH子句来分配MySQL数据库服务器的资源,例如,设置用户每小时可以使用多少个连接或语句。这在共享环境(例如MySQL共享托管)中非常有帮助。

示例

在下面的示例中,我们正在创建用户并向其授予特权-

mysql> use mysql
Database changed
mysql> create user abcd@localhost identified by 'password123';

下面的查询将为我们提供新用户帐户abcd @ localhost的特权。

mysql> SHOW GRANTS FOR abcd@localhost;
+------------------------------------------+
| Grants for abcd@localhost                |
+------------------------------------------+
| GRANT USAGE ON *.* TO 'abcd'@'localhost' |
+------------------------------------------+
1 row in set (0.01 sec)

现在,要将所有特权授予abcd @ localhost用户帐户,我们可以使用以下语句-

mysql> GRANT ALL ON *.* TO 'abcd'@'localhost' WITH GRANT OPTION;

在此,ON *。*子句表示所有数据库和数据库中的所有对象。WITH GRANT OPTION允许abcd @ localhost向其他用户授予特权。

现在,如果我们再次使用SHOW GRANTS语句,我们将看到abcd @ localhost的特权已更新。

mysql> SHOW GRANTS FOR abcd@localhost;
+---------------------------------------------------------------------+
| Grants for abcd@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'abcd'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)
猜你喜欢