MySQL中权限管理的详图介绍
权限管理
MySQL权限系统通过下面两个阶段进行认证:
对连接的用户进行身份认证,合法的用户通过认证,不合法的用户拒绝连接。
对通过认证的合法用户授予相应的权限,用户可以通过再这些权限范围内对数据库做相应的操作。
在权限存取过程中,主要涉及到mysql数据库下user表和db表。user表的数据结构如下:
db表数据结构如下:
表的说明:其中包含用户列、权限列、安全列和资源控制列。用的最频繁的是用户列和权限列,权限分为普通权限和管理权限。普通权限用户数据库的操作如select_priv、insert_priv等。管理权限主要用来对数据库进行管理的操作,比如process_priv、super_priv等。
用户进行连接的时候,权限表的存取过程:先从user表中的host、user和password这三个字段中判断连接的ip、用户名以及密码是否存在表中,如果存在,则通过验证,否则拒绝连接。
通过身份验证之后,按照以下权限表的顺序得到数据库权限:user->db->tables->priv->columns_priv。全局权限,覆盖局部权限。比如一个用户在user表中拥有选择权限,那么他将对所有数据中的所有表所有的列都有选择权限。
权限查找详细描述:当用户通过权限认证之后,进行权限分配时候,按照user->db->tables_priv->columns_priv的顺序进行权限分配,即先检查权限表user,如果user表中对应的权限为Y,此时用户对应所有的数据库权限为Y,将不再检查db、tables_priv、columns_priv;如果为N,则到db表中进行查找用户对于具体数据库权限,如果得到db中的Y权限,则不在查找,否则检查tables_priv,看该数据库对应的具体表权限,如果为Y,则不在查找,否则检查columns_priv表,查看对应的具体列权限。这一点对于我们授予用户权限很重要。
账号管理
创建用户
创建用户,可以使用grant语法创建或者直接操作user表。
方法一:
直接操作use表
insert into user(Host
,User
,Password
) values(“127.0.0.1”,”test”,password(“51testit”));
方法二:
格式 CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;
eg:CREATE USER ‘test’@’127.0.0.1’ IDENTIFIED BY ‘51testit’;
创建之后,登录如下:
MySQL加密方式: MYSQL323加密中生成的是16位字符串,而在MySQLSHA1中生存的是41位字符串,其中是不加入实际的密码运算中,通过观察在很多用户中都携带了”“,在实际破解过程中去掉”*”,也就是说MySQLSHA1加密的密码的实际位数是40位。
Host字段描述
Host值可以是主机名或者IP号,或者locahost代表本地主机。
可以再host列值前面使用通配符”%”和”_”,”%”代表匹配任何主机,空的Host值等于”%”。如”%.myweb.com”,匹配所有mysql.com域的所有主机。案例如下:
Host | User | 解析 |
---|---|---|
myweb.wang | pps | pps,从myweb.wang连接 |
% | pps | pps,从任何主机连接 |
% | ” | 任何用户,从任何主机连接 |
122.164.35.127 | pps | pps,从122.164.35.127连接 |
122.164.35.% | pps | pps,从122.164.35.类型子网的任何主机连接 |
查看用户权限
对于上面创建的test,我没有进行任何授权操作,当我使用test用户去操作数据库时候,发现:
没有数据库操作权限,怎样才能查看用户拥有的权限呢?
查看权限
方法一:
show grants for test@127.0.0.1;
方法二:
查看user表中记录的权限。
select * from mysql.user where user=’test’ and host=’127.0.0.1’ \G;
授予权限
语法格式如下:
grant [privilege1|privilege2|all privileges] on dbName|.tableName 或 to user@hostName ;
当给test用户授予xxpt选择权限时候:
grant select On xxpt.* to test.127.0.0.1;
db表发生了变化,新增加一条记录。但是user表并没有改变。如下:
此时,可以使用test用户进行数据查询操作,但是不能进行增、删、改。于是授予其关于xxpt数据库的所有权限。
grant all privileges on xxpt.* to test@127.0.0.1;
用户test权限如下:
此时可以更新数据
管理权限sueper、process、file授予
grant sueper,process,file On . to ‘test’@’127.0.0.1’;
语句中on后面只能是.
备注:usage 权限用于登录,不能进行任何操作。
删除权限
使用grant新增权限,使用revoke进行权限回收。当然回收权限,也可以直接对user、db、tables_priv和columns_priv表进行操作。但是usage权限是没法收回的。
如回收test对所有数据库的读写权限:
revoke select ,insert on . from test@127.0.0.1;
修改密码
1.使用mysqladmin
2.使用set password for test@127.0.0.1 =password(‘isayhello’);
3.通过grant usage
grant usage on . to ‘test’@’127.0.0.1’ identified by ‘isayhello’;
4.直接修改user表
update user set Password=password(“newpassword”) where ***;
补充mysql中权限
权限 |
权限级别 |
权限说明 |
CREATE |
数据库、表或索引 |
创建数据库、表或索引权限 |
DROP |
数据库或表 |
删除数据库或表权限 |
GRANT OPTION |
数据库、表或保存的程序 |
赋予权限选项 |
REFERENCES |
数据库或表 |
|
ALTER |
表 |
更改表,比如添加字段、索引等 |
DELETE |
表 |
删除数据权限 |
INDEX |
表 |
索引权限 |
INSERT |
表 |
插入权限 |
SELECT |
表 |
查询权限 |
UPDATE |
表 |
更新权限 |
CREATE VIEW |
视图 |
创建视图权限 |
SHOW VIEW |
视图 |
查看视图权限 |
ALTER ROUTINE |
存储过程 |
更改存储过程权限 |
CREATE ROUTINE |
存储过程 |
创建存储过程权限 |
EXECUTE |
存储过程 |
执行存储过程权限 |
FILE |
服务器主机上的文件访问 |
文件访问权限 |
CREATE TEMPORARY TABLES |
服务器管理 |
创建临时表权限 |
LOCK TABLES |
服务器管理 |
锁表权限 |
CREATE USER |
服务器管理 |
创建用户权限 |
PROCESS |
服务器管理 |
查看进程权限 |
RELOAD |
服务器管理 |
执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限 |
REPLICATION CLIENT |
服务器管理 |
复制权限 |
REPLICATION SLAVE |
服务器管理 |
复制权限 |
SHOW DATABASES |
服务器管理 |
查看数据库权限 |
SHUTDOWN |
服务器管理 |
关闭数据库权限 |
SUPER |
服务器管理 |
执行kill线程权限 |
MYSQL的权限如何分布,就是针对表可以设置什么权限,针对列可以设置什么权限等等,这个可以从官方文档中的一个表来说明:
权限分布 |
可能的设置的权限 |
表权限 |
‘Select’, ‘Insert’, ‘Update’, ‘Delete’, ‘Create’, ‘Drop’, ‘Grant’, ‘References’, ‘Index’, ‘Alter’ |
列权限 |
‘Select’, ‘Insert’, ‘Update’, ‘References’ |
过程权限 |
‘Execute’, ‘Alter Routine’, ‘Grant’ |
以上就是MySQL中权限管理的详图介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

可以通过以下步骤打开 phpMyAdmin:1. 登录网站控制面板;2. 找到并点击 phpMyAdmin 图标;3. 输入 MySQL 凭据;4. 点击 "登录"。

使用 Navicat Premium 创建数据库:连接到数据库服务器并输入连接参数。右键单击服务器并选择“创建数据库”。输入新数据库的名称和指定字符集和排序规则。连接到新数据库并在“对象浏览器”中创建表。右键单击表并选择“插入数据”来插入数据。

MySQL和SQL是开发者必备技能。1.MySQL是开源的关系型数据库管理系统,SQL是用于管理和操作数据库的标准语言。2.MySQL通过高效的数据存储和检索功能支持多种存储引擎,SQL通过简单语句完成复杂数据操作。3.使用示例包括基本查询和高级查询,如按条件过滤和排序。4.常见错误包括语法错误和性能问题,可通过检查SQL语句和使用EXPLAIN命令优化。5.性能优化技巧包括使用索引、避免全表扫描、优化JOIN操作和提升代码可读性。

可在 Navicat 中通过以下步骤新建 MySQL 连接:打开应用程序并选择“新建连接”(Ctrl N)。选择“MySQL”作为连接类型。输入主机名/IP 地址、端口、用户名和密码。(可选)配置高级选项。保存连接并输入连接名称。

直接从数据库中恢复被删除的行通常是不可能的,除非有备份或事务回滚机制。关键点:事务回滚:在事务未提交前执行ROLLBACK可恢复数据。备份:定期备份数据库可用于快速恢复数据。数据库快照:可创建数据库只读副本,在数据误删后恢复数据。慎用DELETE语句:仔细检查条件,避免误删数据。使用WHERE子句:明确指定要删除的数据。使用测试环境:在执行DELETE操作前进行测试。

在 Navicat 中执行 SQL 的步骤:连接到数据库。创建 SQL 编辑器窗口。编写 SQL 查询或脚本。单击“运行”按钮执行查询或脚本。查看结果(如果执行查询的话)。
