1. 用create user命令创建名为“u1”、主机名为localhost的数据库用户,密码为111。
CREATE USER 'u1'@'localhost' IDENTIFIED BY '111'; localhost为主机名
2. 使用Insert语句创建一个名为“u2”、主机为localhost的用户,密码为111(需要加密)。
----使用insert语句创建一个u2的用户,没有任何权限
INSERT INTO mysql.user(Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject)
VALUES ('localhost', 'u2', PASSWORD('111'), '', '', '');
------通过insert语句创建用户后需要执行flush PRIVILEGES,目的时刷新内存,新用户才生效
FLUSH PRIVILEGES;
3. 用“u1”用户新建连接,执行对students表的查询操作,说明执行结果,并分析原因。
用创建好的用户建立链接
链接完成后进行语句查询看结果
SELECT * from students;
--本题结果为查询不到。因为该用户没有被授予查询权限,则会出现“无权限访问”或类似的错误信息
4. 在root用户下,将全部数据库的select权限授予用户u1,并允许其向其它用户授权。
GRANT SELECT ON *.* TO 'u1'@'localhost' WITH GRANT OPTION;
*.*指的是全部数据库
whith grant option 意味着限授予用户u1,并允许其向其它用户授权
5.在root用户下,将对s_t数据库teachers表中tno、tname属性的select权限授予用户u2。
GRANT SELECT(tno, tname) ON s_t227.teachers TO 'u2'@'localhost';
6. 在“u1”用户下,对s_t库的students表执行select操作。
use s_t227;
SELECT * from students;
本次操作能够成功,因为我们已经在root用户下,将全部数据库的select权限授予用户u1,并允许其向其它用户授权。
7.以u1连接后,撤销u2用户对stc表的select权限,然后在u2用户连接下,执行下列操作,分析运行结果。
(1)Select * from students
(2)Select * from stc
撤销权限操作
REVOKE SELECT ON s_t227.stc FROM 'u2'@'localhost';
至于连接测试大致就如同上面一样,这里就略过了。