如何使用MyWebSQL给用户授予Delete权限

嘿,跟你讲讲我当年用MyWebSQL那会儿的事儿。

那是大概07 、08 年吧,公司服务器用的是MySQL,我搞开发,得给个新来的同事权限。
他叫小张,新来的,得让他能删数据,但不能乱删。

我就打开那个MyWebSQL3 .0,跟现在这些花里胡哨的不一样,界面简单。
输入服务器的IP,用户名,密码,连上去了。
看到那个管理界面,一堆数据库,挺清晰的。

我就点顶部菜单栏那个【工具】,下拉选【用户管理】。
跳转过去,看到底下列着所有用户,一个个点的,找到小张那个用户名,点一下。

然后系统就显示他现在有什么权限了。
我记着当时他啥权限都没,空白的。
我就点用户详情页那个【全局权限】标签页。
嚯,一堆权限选项,SELECT、INSERT、UPDATE、DELETE...我都给他勾上了,特别是那个DELETE,必须勾上。

然后我赶紧点底部的【更新用户】按钮。
系统弹个框说确认,我说确认。
等了几秒钟,就看到小张跟我说:“老大,我能删数据了!” 我说:“试试看,别删错了啊!”
结果呢,他手一抖,删了个不该删的表。
我赶紧跑过去,用我的账号连上,把数据恢复。
那天晚上,他给我买了杯奶茶赔罪。

所以啊,你看,给用户全局DELETE权限,风险太大了。
后来我就再也不敢随便给全局权限了。
现在都是给数据库级权限,比如只给他在特定数据库里删表。
权限改了,他得重新连一次,这个得记住。

Mysql授权用户所有权限操作_mysql如何赋予用户完整数据库控制权

直接上命令行操作:
创建用户命令: sql CREATE USER 'your_username'@'your_host' IDENTIFIED BY 'your_password';
用户名、主机、密码填具体值就行。
记住别用弱密码。

授权命令: sql GRANT ALL PRIVILEGES ON your_database_name. TO 'your_username'@'your_host';
这里填数据库名和用户名。
ALL PRIVILEGES是核心,但别乱用。

刷新权限: sql FLUSH PRIVILEGES;
执行完就生效了。

注意点: 1 . 主机用'%'代表所有主机,生产环境绝对不行,指定IP或内网段 2 . 密码别用1 2 3 4 5 6 这种,容易被暴力破解 3 . 最好用最小权限原则,比如只需要读就给SELECT权限 4 . GRANT命令带IDENTIFIED BY会改密码,只想改权限就省略这一项
验证方法: 1 . 执行SHOW GRANTS FOR 'user'@'host';看权限列 2 . 用这个用户登录,试创建个表CREATE TABLE test(id INT); 3 . 如果创建成功说明授权对了
怎么选主机名?说个实际案例,上周我给测试用戔回填了'test_user'@'1 9 2 .1 6 8 .1 .%';,这样只让内网段能连。
你自己看行不行?

试论述MySQL用户获取数据库数据访问权限的三种方法的具体使用

记得上次帮朋友调试数据库时,他急得满头大汗,说新加的用户怎么连不进去。
我一看,忘了给用户授权了。
这事儿让我想起,搞数据库真得一步一步来,不能想当然。

你看这个 GRANT 语句,写得挺明白的。
比如给 test1 用户授权,密码是 abc,让他能在任何主机上登录,对所有数据库有所有权限。
先用 root 用户登录,然后一步步来:
sql GRANT ALL ON . TO 'test1 '@'%' IDENTIFIED BY 'abc'; FLUSH PRIVILEGES;
这行 GRANT 语句里,ALL 是所有权限,. 是所有数据库的所有表,'test1 '@'%' 表示任何主机都能用 test1 用户登录,IDENTIFIED BY 'abc' 是设置密码。

然后 FLUSH PRIVILEGES,这步挺重要,不然权限设置可能不会立即生效。
记得上次我忘了这步,折腾了好半天。

朋友说,他试了试,还是不行。
我让他检查一下 user 表和 db 表是不是插入了正确的数据。
果然,他的 db 表没插全字段值。
你看,这种细节问题,最容易让人抓狂。

所以,搞数据库,得像做菜一样,一步一个脚印。
盐放多了少放了,都得尝尝才知道。
不像有些人,喜欢一次性把所有菜都扔锅里乱炖,最后都不知道吃的是啥。

等等,我好像记得你之前说过,你们公司那个新来的实习生,对数据库操作挺感兴趣的。
他是不是在研究这个?等等,还有个事,你上次说的那个数据库备份脚本,是不是也用到了这些授权操作?

MySQL如何查看当前用户权限 权限层级与GRANT/REVOKE操作详解

直接说,查MySQL权限,用SHOWGRANTS。

对指定用户,命令格式是:SHOWGRANTSFOR'username'@'host';
看当前用户,直接用:SHOWGRANTS;
权限层级?全局、数据库、表、列、存储过程。

给权限,用GRANT,格式:GRANT权限ON数据库.表TO用户@主机;
撤回权限,用REVOKE,格式和GRANT一样。

主机名很重要,localhost本地,%任何主机,但要小心。

权限改了,有时要FLUSHPRIVILEGES让改动生效。

密码策略,MySQL8 .0开始严格,用SHOWVARIABLESLIKE'validate_password%'查。

忘root密码,重启MySQL,用--skip-grant-tables跳过验证,再改密码。

权限收回了,用户还能连,但不能操作,要彻底禁用,用DROPUSER。

管理权限,遵循最小权限、用角色、定期审查、密码策略、备份权限。

这就完了,自己看吧。