mysql用户授权与权限撤销
实验练习:
1.允许root从192.168.4.0/24网段访问,对所有库/表有完全控制权限,需要验证的密码为xujunxian。
2.建立一个管理账号dba007,对所有库完全控制,并赋予其授权的权限。
3.撤销root从本机访问的权限,然后恢复。
4.允许webuser从任意客户机登录,只对webdb库有完全权限,密码为 888888。
5.撤销webuser的完全权限,改为查询权限。
实验方案:
使用2台RHEL 6.4虚拟机,如图-1所示。其中192.168.4.10是MySQL服务器,授权及撤销操作均在此服务器上执行;而192.168.4.120作为测试客户机,需要安装好MySQL-client软件包,以便提供mysql命令。
同时,MySQL服务器本身(192.168.4.10)也可以作为测试客户机。
1.用户授权及撤销的基本操作
1)认识GRANT授权的指令用法
格式:
mysql> GRANT 权限列表.. ON 库名.表名 TO '用户名'@'客户端地址' [ IDENTIFIED BY '密码' ] [ WITH GRANT OPTION ];
2)验证不提供IDENTIFIED BY、访问权限控制
授予用户nopass可匿名查询test库里的所有表,可使用CREATE指令:
mysql> GRANT select,create ON test.* TO nopass@localhost;
Query OK, 0 rows affected (0.04 sec)
# mysql -u nopass //以用户nopass登入测试,不需要密码
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql>
用户nopass只能看到test库和系统库information_schema,其他库(mysql等)将不可见:
mysql> SHOW DATABASES; //其他的数据库不可见
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.15 sec)
用户nopass也可以列出test库中的所有表:
//test库中的表权限不收影响,可查、建、删
mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| biao01 |
| biao02 |
| gz |
| stu_info |
用户nopass可以使用SELECT语句:
mysql> SELECT * FROM stu_info LIMIT 3; //可以查看
+------+--------+-----+
| name | gender | age |
+------+--------+-----+
| Jim | girl | 24 |
| Tom | boy | 21 |
| Lily | girl | 20 |
+------+--------+-----+
用户nopass可以使用CREATE语句:
mysql>CREATE TABLE mytable(id int(4));//可以创建
Query OK, 0 rows affected (0.10 sec)
3)验证IDENTIFIED BY访问密码
修改前一步中用户nopass从localhost访问的授权,设置密码为123123:
mysql> GRANT select,create ON test.* TO nopass@localhost
-> IDENTIFIED BY '123123'; //设置密码123123
Query OK, 0 rows affected (0.00 sec)
重新以nopass用户登录mysql> 环境,不提供密码时将被拒绝:
# mysql -u nopass
.ERROR 1045 (28000): Access denied for user 'nopass'@'localhost' (using password: NO)//不提供密码将会拒绝
只有正确提供密码123123,才能够成功登入:
[root@dbsvr1 ~]# mysql -u nopass -p
Enter password: //输入密码123123
Welcome to the MySQL monitor. Commands end with ; or \g.
4)验证提供WITH GRANT OPTION
授予用户rooty可查询、更新test库里的所有表,密码设置为pwd123,允许此用户将权限转授给其他用户:
mysql> GRANT select,update ON test.* TO rooty@localhost
-> IDENTIFIED BY 'pwd123'
-> WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
以用户rooty登入测试
# mysql -u rooty -p
Enter password: //输入密码pwd123
mysql>show grants ;//查看当前登录用户的