mysql验证所获得的查询、插入、创建表权限
时间: 2023-07-31 07:07:55 浏览: 57
在 MySQL 中,可以通过 GRANT 命令为用户授权不同的权限。其中包括查询、插入、创建表等权限。具体权限如下:
1. SELECT:允许用户查询数据库中的数据。
2. INSERT:允许用户向数据库中插入新的数据。
3. UPDATE:允许用户修改数据库中已有的数据。
4. DELETE:允许用户删除数据库中的数据。
5. CREATE:允许用户创建新的数据库、表或索引。
6. DROP:允许用户删除数据库、表或索引。
7. ALTER:允许用户修改数据库结构。
8. INDEX:允许用户创建或删除索引。
可以通过如下语句为用户授权:
```
GRANT 权限类型 ON 数据库名.表名 TO 用户名@'访问主机名' IDENTIFIED BY '密码';
```
其中,权限类型可以是以上列出的任意一种,也可以是 ALL 表示授予所有权限;数据库名和表名可以指定具体的数据库和表,也可以使用通配符 * 表示所有数据库和表;用户名和密码用于验证用户身份;访问主机名可以是具体的 IP 地址或域名,也可以使用通配符 % 表示所有客户端。
例如,以下语句为用户 tom 授予在 test 数据库中查询、插入、创建表权限:
```
GRANT SELECT, INSERT, CREATE ON test.* TO 'tom'@'localhost' IDENTIFIED BY 'password';
```
相关问题
1.在服务器下创建一个名为“user12”的登陆名,密码为“123456”。 2.将该登陆名“user12”注册为“XSCJGL”数据库的用户。 3.给“user12”用户赋予“student”和“sc”的查询、插入权限。 4.赋予“user12”创建表的权限。 5.使用“user12”身份登陆,并验证所获得的查询、插入、创建表权限。 6.利用管理员身份,禁止用户“user12”所获得的权限。(deny) 7.使用“user12”身份登陆,并验证所获得的查询、插入、创建表权限。 8.利用管理员身份,收回用户“user12”所获得的权限。(revoke) 9.使用“user12”身份登陆,并验证所获得的查询、插入、创建表权限。
以下是针对您提出的问题的解答:
1. 使用管理员账号登录MySQL,执行以下命令创建user12账号并设置密码:
```
CREATE USER 'user12'@'localhost' IDENTIFIED BY '123456';
```
2. 授权user12账号访问XSCJGL数据库:
```
GRANT USAGE ON *.* TO 'user12'@'localhost';
GRANT ALL PRIVILEGES ON `XSCJGL`.* TO 'user12'@'localhost';
```
3. 给user12用户赋予student和sc表的查询、插入权限:
```
GRANT SELECT, INSERT ON `XSCJGL`.`student` TO 'user12'@'localhost';
GRANT SELECT, INSERT ON `XSCJGL`.`sc` TO 'user12'@'localhost';
```
4. 赋予user12创建表的权限:
```
GRANT CREATE TABLE ON `XSCJGL`.* TO 'user12'@'localhost';
```
5. 使用以下命令以user12身份登录MySQL,并验证所获得的权限:
```
mysql -u user12 -p
```
输入密码后,执行以下命令测试权限:
```
USE XSCJGL;
SELECT * FROM student;
INSERT INTO student VALUES ('001', '张三', '男', 20, '计算机科学与技术');
SELECT * FROM sc;
INSERT INTO sc VALUES ('001', '001', 80);
CREATE TABLE test (id INT, name VARCHAR(20));
```
如果没有报错并成功执行,则表明user12获得了相应的权限。
6. 使用管理员账号登录MySQL,执行以下命令禁止user12所获得的权限:
```
DENY SELECT, INSERT ON `XSCJGL`.`student` TO 'user12'@'localhost';
DENY SELECT, INSERT ON `XSCJGL`.`sc` TO 'user12'@'localhost';
DENY CREATE TABLE ON `XSCJGL`.* TO 'user12'@'localhost';
```
7. 使用以下命令以user12身份登录MySQL,并验证所获得的权限:
```
mysql -u user12 -p
```
输入密码后,执行以下命令测试权限:
```
USE XSCJGL;
SELECT * FROM student;
INSERT INTO student VALUES ('001', '张三', '男', 20, '计算机科学与技术');
SELECT * FROM sc;
INSERT INTO sc VALUES ('001', '001', 80);
CREATE TABLE test (id INT, name VARCHAR(20));
```
如果出现“ERROR 1142 (42000): 没有此权限”等类似错误,则表明user12被禁止了相应的权限。
8. 使用管理员账号登录MySQL,执行以下命令收回user12所获得的权限:
```
REVOKE SELECT, INSERT ON `XSCJGL`.`student` FROM 'user12'@'localhost';
REVOKE SELECT, INSERT ON `XSCJGL`.`sc` FROM 'user12'@'localhost';
REVOKE CREATE TABLE ON `XSCJGL`.* FROM 'user12'@'localhost';
```
9. 使用以下命令以user12身份登录MySQL,并验证所获得的权限:
```
mysql -u user12 -p
```
输入密码后,执行以下命令测试权限:
```
USE XSCJGL;
SELECT * FROM student;
INSERT INTO student VALUES ('001', '张三', '男', 20, '计算机科学与技术');
SELECT * FROM sc;
INSERT INTO sc VALUES ('001', '001', 80);
CREATE TABLE test (id INT, name VARCHAR(20));
```
如果出现“ERROR 1142 (42000): 没有此权限”等类似错误,则表明user12已经被收回了相应的权限。
(一)创建用户并授权 1.创建一个用户user1。 2.把查询Student表权限授给用户user1,并验证授权后效果。 3.把对表SC的查询权限授予用户user2。 4.把对表Student的Insert权限授予user1,并允许将权限转授给其他用户。 (二)权限的回收 1.收回用户user2对表SC的查询权限。 2.收回用户user1对Student表的Insert权限。 3.在回收权限之后验证用户是否真正丧失了该权限(查询表,插入记录)。 (三)角色的使用 1. 创建一个角色。 2. 给角色授予权限。 3. 将角色授予某一用户。 4. 检查用户是否具有相应的权限。
好的,您的问题是如何在MySQL数据库中创建用户并授权?我可以为您提供一些简单的步骤:
1. 创建用户:使用CREATE USER语句创建一个新用户,例如:
```
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password';
```
2. 授权查询权限:使用GRANT语句将查询Student表的权限授予用户user1,例如:
```
GRANT SELECT ON database.Student TO 'user1'@'localhost';
```
3. 授权查询权限:使用GRANT语句将查询SC表的权限授予用户user2,例如:
```
GRANT SELECT ON database.SC TO 'user2'@'localhost';
```
4. 授权插入权限:使用GRANT语句将插入Student表的权限授予用户user1,并允许将权限转授给其他用户,例如:
```
GRANT INSERT, GRANT OPTION ON database.Student TO 'user1'@'localhost';
```
5. 回收查询权限:使用REVOKE语句将用户user2对SC表的查询权限收回,例如:
```
REVOKE SELECT ON database.SC FROM 'user2'@'localhost';
```
6. 回收插入权限:使用REVOKE语句将用户user1对Student表的插入权限收回,例如:
```
REVOKE INSERT ON database.Student FROM 'user1'@'localhost';
```
7. 使用权限:验证用户是否真正丧失了该权限,例如:
```
SELECT * FROM database.Student; -- 如果用户user1被收回了查询权限,将会返回错误
INSERT INTO database.Student VALUES (1, 'John Doe'); -- 如果用户user1被收回了插入权限,将会返回错误
```
8. 创建角色:使用CREATE ROLE语句创建一个新角色,例如:
```
CREATE ROLE 'role1';
```
9. 授予权限:使用GRANT语句将权限授予角色,例如:
```
GRANT SELECT ON database.Student TO 'role1';
```
10. 将角色授予用户:使用GRANT语句将角色授予用户,例如:
```
GRANT 'role1' TO 'user1'@'localhost';
```
11. 检查权限:使用SHOW GRANTS语句检查用户是否具有相应的权限,例如:
```
SHOW GRANTS FOR 'user1'@'localhost';
```
希望这些步骤能够帮助您在MySQL数据库中创建用户并授权。如果您需要更多帮助,请随时问我。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)