我们需要向创建的新用户授予特权,因为新用户将没有特权。我们可以使用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)