mysql中怎样的用户拥有”super”权限?
今天下午用前面提到的init-connect方法把一个mysql3.23.58的库倒到了5.0.x的库里
然后领导说,怎么那个什么页面还是乱码呀
他说的那个我知道,因为是用root用户直接连库的(init-connect的设定不生效)
于是我就胸有成竹的告诉领导是连库用了root用户的原因
然后我就在程序里把用户该成了一个普通用户
再一刷页面
“怎么还是乱码呀”
一下子,我的汗都出来了
“怎么会呀,那天测试过的,没有问题的”
于是我又重新倒库的sql语句iconv折腾了几下
重新倒库
还是不行
我仔细回想了上次测试的过程
最后,灵光一现:会不会是这个普通用户也有问题呀?
因为当时我给这个用户赋权限的时候因为其要access多个库
于是我就是用grant all privileges on *.*这种方式搞的
这样比较奇怪,我一般都是指定了某个数据库,很少有这样用”*”代替数据库名赋权限的
所以我就进mysql查了下
use mysql;
select User, Super_priv from user;
果然,这个“普通用户”的Super_priv是’Y’
而相应其他的用户(除了root)都是’N’
按照文档,具有”super”权限的用户连上mysql库,是会被忽略init-connect参数的
而php程序如果不指定,却省是用的latin1来连接数据库的
所以就乱码了呀
知道了原因,再改起来就容易了
update user set Super_priv = ‘N’ where User = ……
flush privileges;
一下就好了




