[MySQL FAQ]系列 -- 为何授权不对
前言: 今天帮同事处理了一个关于mysql授权的问题,虽是小事,不过不注意的话,还挺头大的,呵呵。
先对比看看下面2个授权信息之间的区别吧:
GRANT SELECT, DELETE, UPDATE, INSERT ON *.* TO 'yejr'@'192.168.0.1' IDENTIFIED BY PASSWORD '*1088950C531DC1BE311435F60B57145D8A49019C'
和
GRANT SELECT, DELETE, UPDATE, INSERT ON `*`.* TO 'yejr'@'192.168.0.1' IDENTIFIED BY PASSWORD '*1088950C531DC1BE311435F60B57145D8A49019C'
呵呵,看起来都很像,没什么问题吧,实际反映到数据库授权表结果变成了:
GRANT SELECT, DELETE, UPDATE, INSERT ON *.* TO 'yejr'@'192.168.0.1' IDENTIFIED BY PASSWORD '*1088950C531DC1BE311435F60B57145D8A49019C'
和
GRANT USAGE ON *.* TO 'yejr'@'192.168.0.1' IDENTIFIED BY PASSWORD '*1088950C531DC1BE311435F60B57145D8A49019C' GRANT SELECT, INSERT, UPDATE, DELETE ON `*`.* TO 'yejr'@'192.168.0.1'
现在看出来区别了吧。
第一条授权信息,允许 yejr@192.168.0.1 对所有数据库&表(*.*)有相关权限;而第二条授权信息则允许 yejr@192.168.0.1 仅仅对数据库 * 下面的表(`*`.*)有相关权限。注意,这里的数据库名 * 可不是代表所有哦,而是具体的名字就叫做 *,也就是说数据库主目录下,会有一个名是 * 的子目录。mysql允许以反引号来把数据库名引用起来,是的可以使用一些比较古怪的字符,例如:*, ', $, % 等等。
评论
游客 (未验证)
周二, 2009/06/02 - 15:00
Permalink
这种低级错误也要写
这种低级错误也要写出来 ,太无聊了吧。
yejr
周二, 2009/06/02 - 15:58
Permalink
呵呵,再低级的错误
呵呵,再低级的错误,也是错误,也有人会犯的
MySQL方案、培训、支持
save (未验证)
周日, 2010/02/07 - 20:09
Permalink
这个错误很常见吧,
这个错误很常见吧,而且一般自己写的很难发现,要不现在很多公司流行交换检查嘛
游客 (未验证)
周四, 2009/06/25 - 00:14
Permalink
兄弟貌似水平不错哦
兄弟貌似水平不错哦!!我是比较丢人,没有能立马看出他们的差异,老叶写的不错,最少对我是个提醒..