概述
文章目录
- user 表
- db 表
- tables_priv 表
- columns_priv表
MySQL 数据库中与权限相关的表:user、db、tables_priv、columns_priv。
user 表
mysql> select * from mysql.userG
*************************** 1. row ***************************
Host: localhost
User: root
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
Create_tablespace_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string: *6969E01196BECE74725D5CD9F8C58F1D7529C352
password_expired: N
password_last_changed: 2020-07-27 10:06:49
password_lifetime: NULL
account_locked: N
mysql.user
表列出可以连接服务器的用户信息,并且存储了用户的全局权限信息。在 mysql.user
表启用的任何权限均是全局权限,即适用于所有数据库的所有表。
如上面的查询结果所示,用户 root@localhost
的 Select_priv
字段值为 Y
,说明该用户可以查询任意数据库的任意表。
当你执行下面的授权语句后,如果 user 表中不存在 test@%
用户,那么就会往 user 表中插入一条记录,如果存在则会将 Select_priv
字段的值设为 Y
:
mysql> grant select on *.* to 'test'@'%';
db 表
mysql> select * from mysql.dbG
*************************** 1. row ***************************
Host: %
Db: test
User:
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: N
Execute_priv: N
Event_priv: Y
Trigger_priv: Y
*************************** 2. row ***************************
Host: localhost
Db: performance_schema
User: mysql.session
Select_priv: Y
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Execute_priv: N
Event_priv: N
Trigger_priv: N
mysql.db
表存储用户对数据库的权限数据。这里开启的权限适用于一个数据库中的所有表。
我们看下上面查询结果的第一条记录可得知,任何用户都可以访问数据库 test
,因为 User
字段是空。但是用户除了 Grant_priv
、Alter_routine_priv
、Execute_priv
没有权限之外,其它权限都有。
我们再看下上面查询结果的第二条记录可得知,用户 mysql.session@localhost
对数据库 performance.schema
除了拥有 Select_priv
权限之外,其它权限都没有。
当你执行下面的语句后,如果 mysql.db
表不存在用户 test@%
对数据库 test
的授权记录,那么会往 mysql.db
表插入一条记录;如果存在该用户的授权记录,则会将字段 Select_priv
的值设为 Y
:
mysql> grant select on testdb.* to 'test'@'%';
tables_priv 表
mysql> select * from tables_privG
*************************** 1. row ***************************
Host: localhost
Db: sys
User: mysql.sys
Table_name: sys_config
Grantor: root@localhost
Timestamp: 2020-07-27 10:06:49
Table_priv: Select
Column_priv:
*************************** 3. row ***************************
Host: 127.0.0.1
Db: qydpw
User: lwx
Table_name: tf_user
Grantor: root@localhost
Timestamp: 2021-10-07 13:16:11
Table_priv: Select,Update
Column_priv:
tables_priv
表存储着用户对某个表的权限数据,这里开启的一个权限适用于一个表的所有列。
看上面的查询结果的第一条记录可得知,用户 mysql.sys@localhost
对表 sys.sys_config
只有 Selec
权限;看上面查询结果的第二条记录可得知,用户 lwx@127.0.0.1
对表 qydpw.tf_user
有 Select
和 Update
权限。
当你执行下面的语句后,如果表中没有用户对应的记录,则会往表中插入一条记录;如果存在该用户的记录,则会往字段 Table_priv
存入一个值 Select
:
mysql> grant select on testdb.student to 'test'@'%';
columns_priv表
columns_priv
表指定列级权限。这张表保存着用户对某个表的特定列的权限数据。这里指定的权限适用于一个表的特定列。
当你执行下面的语句:
mysql> grant select(advice_id,user_id) on qydpw.tf_advice to lwx@127.0.0.1;
会往表 columns_priv
插入两条记录,表示用户 lwx@127.0.0.1
对表的 advice_id
、user_id
拥有 Select
权限:
mysql> select * from mysql.columns_priv;
+-----------+-------+------+------------+-------------+---------------------+-------------+
| Host | Db | User | Table_name | Column_name | Timestamp | Column_priv |
+-----------+-------+------+------------+-------------+---------------------+-------------+
| 127.0.0.1 | qydpw | lwx | tf_advice | advice_id | 0000-00-00 00:00:00 | Select |
| 127.0.0.1 | qydpw | lwx | tf_advice | user_id | 0000-00-00 00:00:00 | Select |
+-----------+-------+------+------------+-------------+---------------------+-------------+
2 rows in set (0.00 sec)
最后
以上就是闪闪可乐为你收集整理的MySQL数据库的权限表user 表db 表tables_priv 表columns_priv表的全部内容,希望文章能够帮你解决MySQL数据库的权限表user 表db 表tables_priv 表columns_priv表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复