- 授权就是为某个用户赋予某些权限。MySQL 提供了 GRANT 语句来为用户设置权限,GRANT语句可以为新建的权限用户赋予权限
- 在 GRANT 语句中可用于指定权限级别的值有以下几类格式:
格式 |
描述 |
* |
表示当前数据库中的所有表。 |
*.* |
表示所有数据库中的所有表。 |
db_name.* |
表示某个数据库中的所有表,db_name 指定数据库名。 |
db_name.tbl_name |
表示某个数据库中的某个表或视图,db_name 指定数据库名,tbl_name 指定表名或视图名。 |
db_name.routine_name |
表示某个数据库中的某个存储过程或函数,routine_name 指定存储过程名或函数名。 |
TO 子句 |
如果权限被授予给一个不存在的用户,MySQL 会自动执行一条 CREATE USER 语句来创建这个用户,但同时必须为该用户设置密码。 |
- 在 MySQL 中,拥有 GRANT 权限的用户才可以执行 GRANT 语句
语法
GRANT priv_type [(column_list)] ON database.table
TO user IDENTIFIED BY [PASSWORD] 'password', user IDENTIFIED BY [PASSWORD] 'password'] ...
WITH with_option [with_option]...
参数 |
描述 |
||||||||||||
priv_type |
表示权限类型; |
||||||||||||
columns_list |
表示权限作用于哪些列上,省略该参数时,表示作用于整个表; |
||||||||||||
database.table |
用于指定权限的级别; |
||||||||||||
user |
表示用户账户,由用户名和主机名构成,格式是“'username'@'hostname'”; |
||||||||||||
IDENTIFIED BY |
用来为用户设置密码,权限用户无密码时可以省略 |
||||||||||||
password |
是用户的新密码 |
||||||||||||
with_option |
额外参数
|
示例
mysql> GRANT ALL PRIVILEGESON *.* TO 'testUser'@'localhost' IDENTIFIED BY '123456'
WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.05 sec)
- 此命令表示授予testUser用户超级权限
示例
mysql> GRANT SELECT,INSERT ON *.* TO 'testUser1'@'localhost' IDENTIFIED BY 'testPwd'
WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.05 sec)
- 使用 SHOW GRANTS 语句查询用户 testUser 的权限,如下所示。
mysql> SHOW GRANTS FOR 'testUser'@'localhost';
+--------------------------------------------------------------------------------------------------+
| Grants for testUser@localhost |
+--------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'testUser'@'localhost' WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
- 结果显示,testUser 对所有数据库的所有表有查询、插入权限,并可以将这些权限赋予给别的用户