1、查看当前登陆数据库服务器的用户是谁?

mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost | 
+----------------+
1 row in set (0.00 sec)


2、查看当前登陆数据库服务器用户的权限?

mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION | 
+---------------------------------------------------------------------+
1 row in set (0.00 sec)


3、查看当前数据库服务器有哪些授权用户。

mysql> select user,host,password from mysql.user; 
+------+-----------------------+----------+
| user | host                  | password |
+------+-----------------------+----------+
| root | localhost             |          | 
| root | localhost.localdomain |          | 
| root | 127.0.0.1             |          | 
|      | localhost             |          | 
|      | localhost.localdomain |          | 
+------+-----------------------+----------+
5 rows in set (0.00 sec)


4、不允许匿名账号在数据库服务器本机登录。

mysql> delete from mysql.user where user="";
Query OK, 2 rows affected (0.00 sec)

mysql> select user,host,password from mysql.user;
+------+-----------------------+----------+
| user | host                  | password |
+------+-----------------------+----------+
| root | localhost             |          | 
| root | localhost.localdomain |          | 
| root | 127.0.0.1             |          | 
+------+-----------------------+----------+
3 rows in set (0.00 sec)
mysql> flush privileges;


5、授权数据库管理员可以在192.168.1.0/24网段内的所有主机访问数据库服务器的所有库,对所有库有完全权限且有授权的权限、 登陆密码tarena。

 mysql> grant all on *.* to root@"192.168.1.%" identified by "tarena" with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


6、不允许数据库管理员在数据库服务器本机登录。

mysql> delete  from mysql.user where password="";
Query OK, 3 row affected (0.00 sec)
mysql> select user,host,password from mysql.user;
+------+----------------+------------------+
| user | host           | password         |
+------+----------------+------------------+
| root | 192.168.1.0/24 | 3907ff810e745021 | 
+------+----------------+------------------+
1 row in set (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


7、授权userweb用户可以从网络中的任意主机访问数据库服务器,对webdb中的regtab表有查看、更新name字段和age字段的权限 密码userweb888。

mysql> create table regatb(
    -> name char(5),
    -> age int(2)
    -> );
mysql> grant select,update(name,age) on regtab to userweb@"%" identified by "userweb888";
Query OK, 0 rows affected (0.00 sec)

 

8、验证以上授权是否成功

[root@CentOS6 ~]# mysql -u root -h 192.168.1.2 -p tarena
Welcome to the MySQL monitor.  Commands end with ; or \g.
....
mysql> show grants;
+------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected].%                                                                                     |
+------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY PASSWORD '3907ff810e745021' WITH GRANT OPTION |
+------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> exit
Bye
[root@CentOS6 ~]# mysql -u userweb  -h 192.168.1.2 -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
....
mysql> show grants;
+-------------------------------------------------------------------------------+
| Grants for userweb@%                                                          |
+-------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'userweb'@'%' IDENTIFIED BY PASSWORD '1eb79d5f4f67a7b5' |
| GRANT SELECT, UPDATE (name, age) ON `webdb`.`regtab` TO 'userweb'@'%'         |
+-------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> desc webdb.regtab;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| name  | char(5) | YES  |     | NULL    |       | 
| age   | int(2)  | YES  |     | NULL    |       | 
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> insert into webdb.regtab
    -> (name,age)
    -> values
    -> ("tom","18");
Query OK, 1 row affected (0.00 sec)
mysql> update webdb.regtab set name="hello" where name="tom";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from webdb.regtab;
+-------+------+
| name  | age  |
+-------+------+
| hello |   18 |
+-------+------+
1 row in set (0.00 sec)


9、撤销以上用户的所有授权并删除授权用户。

mysql> revoke  all on *.* to userweb@"%";
mysql> delete from mysql.user where user="userweb";
Query OK, 1 row affected (0.00 sec)
mysql> revoke  all on *.*  to root@"192.168.10.%" 
mysql> delete from mysql.user where user="root";
Query OK, 1 row affected (0.00 sec)
mysql> delete from mysql.user where host="192.168.10.%";
Query OK, 1 row affected (0.00 sec)
mysql> select * from columns_priv;
+------+-------+---------+------------+-------------+---------------------+-------------+
| Host | Db    | User    | Table_name | Column_name | Timestamp           | Column_priv |
+------+-------+---------+------------+-------------+---------------------+-------------+
| %    | webdb | userweb | regtab     | name        | 2014-01-03 14:29:24 | Update      | 
| %    | webdb | userweb | regtab     | age         | 2014-01-03 14:29:24 | Update      | 
+------+-------+---------+------------+-------------+---------------------+-------------+
2 rows in set (0.00 sec)

mysql> delete from columns_priv;
Query OK, 2 rows affected (0.00 sec)

mysql> select * from columns_priv;
Empty set (0.00 sec)

 

10、只允许数据库管理员从数据库服务器本机登录。

mysql> grant all on *.* to root@"localhost" with grant option;
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host,password from mysql.user;
+------+-----------+----------+
| user | host      | password |
+------+-----------+----------+
| root | localhost |          | 
+------+-----------+----------+
1 row in set (0.00 sec)

mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION | 
+---------------------------------------------------------------------+
1 row in set (0.00 sec)


11、授权可以是数据库的管理员账户从自己的工作主机192.168.1.100主机登陆数据库服务器 对所有库所有表有完全权限 且有授权的权限 登陆密码为20140103

mysql> grant all on *.* to root@"192.168.1.100" identified by  "20140103" with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host,password from mysql.user;
+------+---------------+------------------+
| user | host          | password         |
+------+---------------+------------------+
| root | localhost     |                  | 
| root | 192.168.1.100 | 6ec1a451734115d9 | 
+------+---------------+------------------+
3 rows in set (0.00 sec)

 

12、验证管理员从192.168.1.100登陆时的权限

mysql> show grants;
+------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected]                                                                                     |
+------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.10.1' IDENTIFIED BY PASSWORD '6ec1a451734115d9' WITH GRANT OPTION |
+------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


13、撤销管理员从192.168.1.100登陆时的授权权限

mysql> revoke grant option on *.* from root@"192.168.1.00";
mysql>flush privileges
//这样估虽然没有删除授权权限,但是这个用户也没有mysql.user这个表的权限了。同样不能进行授权。
mysql> grant all on webdb.* to webuser@"%" identified by "123" with grant option;
Query OK, 0 rows affected (0.00 sec)