数据库
首页 > 数据库> > MySQL授权认证

MySQL授权认证

作者:互联网

MySQL权限系统介绍

查看用户:

mysql> select user,host from mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)

创建与删除用户:

#创建用户并授权
mysql> create user admin@'10.0.0.51' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

#删除用户
mysql> drop user admin@'10.0.0.51';
Query OK, 0 rows affected (0.00 sec)

查询与插入权限:

#admin@'10.0.0.1'用户对course有查询权限
mysql> grant select on course.* to admin@'10.0.0.1';
Query OK, 0 rows affected (0.00 sec)

#admin@'10.0.0.2'用户对course有插入权限
mysql> grant insert on course.* to admin@'10.0.0.2';

 

MySQL权限级别

系统权限表

权限存储在mysql库的 user,db,tables_priv,columns_priv,and proces_priv这几个系统表中,待MySQL实例启动后就加载到内存中

MySQL修改权限的生效

全局权限授予与撤销:

#全局查询权限和插入授予10.0.0.1
mysql> grant select,insert on *.* to admin@'10.0.0.51';
Query OK, 0 rows affected (0.00 sec)


#查看有哪些权限
mysql> show grants for admin@'10.0.0.51';
+----------------------------------------------------+
| Grants for admin@10.0.0.51                         |
+----------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'admin'@'10.0.0.51' |
+----------------------------------------------------+
1 row in set (0.00 sec)

mysql> select * from mysql.user where user='admin'\G;

#撤销权限
mysql> revoke select on *.* from admin@'10.0.0.51';
Query OK, 0 rows affected (0.01 sec)

#现在只能插入,不能查询
mysql> show grants for admin@'10.0.0.51';
+--------------------------------------------+
| Grants for admin@10.0.0.51                 |
+--------------------------------------------+
| GRANT INSERT ON *.* TO 'admin'@'10.0.0.51' |
+--------------------------------------------+
1 row in set (0.00 sec)

mysql> select * from mysql.user\G;

数据库级别授权与撤销:

#10.0.0.51用户对test库有更新权限
mysql> grant update on test.* to admin@'10.0.0.51';
Query OK, 0 rows affected (0.00 sec)

#查看
mysql> show grants for admin@'10.0.0.51';
+----------------------------------------------------+
| Grants for admin@10.0.0.51                         |
+----------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'admin'@'10.0.0.51' |
| GRANT UPDATE ON `test`.* TO 'admin'@'10.0.0.51'    |
+----------------------------------------------------+
2 rows in set (0.00 sec)

mysql> select * from mysql.db where user='admin'\G;

#撤销授权
mysql> revoke update on test.* from admin@'10.0.0.51';
Query OK, 0 rows affected (0.00 sec)

#查询权限表
mysql> select * from mysql.db where user='admin'\G;

数据库对象级别授权与撤销:

#10.0.0.51用户表级别授权
mysql> grant delete on world.city to admin@'10.0.0.51' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

#查询权限
mysql> show grants for admin@'10.0.0.51';
+-------------------------------------------------------+
| Grants for admin@10.0.0.51                            |
+-------------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'admin'@'10.0.0.51'    |
| GRANT UPDATE ON `test`.* TO 'admin'@'10.0.0.51'       |
| GRANT UPDATE ON `mysql`.* TO 'admin'@'10.0.0.51'      |
| GRANT DELETE ON `world`.`city` TO 'admin'@'10.0.0.51' | <----刚刚授权过的权限
+-------------------------------------------------------+
4 rows in set (0.00 sec)

mysql> select * from mysql.tables_priv\G;

#删除权限
mysql> delete from world.city where name='Wuhan';
Query OK, 1 row affected (0.00 sec)
#查询
mysql> select * from world.city where name='Wuhan';
Empty set (0.00 sec)

#更新到内存
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

#查询权限表
mysql> select * from mysql.tables_priv where user='admin'\G;

授权列层级的权限:

#授权列级name和id的查询权限
mysql> grant select (name,id) on world.city to admin@'10.0.0.51';
Query OK, 0 rows affected (0.00 sec)

#查看用户权限
mysql> show grants for admin@'10.0.0.51';
+--------------------------------------------------------------------------+
| Grants for admin@10.0.0.51                                               |
+--------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'admin'@'10.0.0.51'                                |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `world`.* TO 'admin'@'10.0.0.51' |
| GRANT SELECT (name, id) ON `world`.`city` TO 'admin'@'10.0.0.51'         | <---添加的权限
+--------------------------------------------------------------------------+
3 rows in set (0.00 sec)

#添加到内存
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

#查询表
mysql> select * from mysql.columns_priv;
+-----------+-------+-------+------------+-------------+---------------------+-------------+
| Host      | Db    | User  | Table_name | Column_name | Timestamp           | Column_priv |
+-----------+-------+-------+------------+-------------+---------------------+-------------+
| 10.0.0.51 | world | admin | city       | id          | 0000-00-00 00:00:00 | Select      |
| 10.0.0.51 | world | admin | city       | name        | 0000-00-00 00:00:00 | Select      |
+-----------+-------+-------+------------+-------------+---------------------+-------------+
2 rows in set (0.00 sec)

 

标签:10.0,admin,MySQL,认证,sec,mysql,0.51,授权,权限
来源: https://www.cnblogs.com/Mercury-linux/p/12826827.html