mysql5 1 系列 關於使用者授權的乙個bug

2021-09-21 02:59:12 字數 1717 閱讀 3212

不知道我這文章名字這樣寫是否精確,但是我在5.1.37 和 5.1.60 兩個版本上碰到了這樣的問題。

以前**鏈結資料庫的使用者許可權是 grant all on *.* to user identified by 'password'

後來感覺這樣的許可權太大,想修改為只能從特定主機訪問特定庫,於是執行

revoke all on *.* from user;

然後重新賦許可權:revoke all on ledb.* from [email protected];

之後flush privileges;

然後到192.168.100.10機器上登陸mysql,執行mysql -uuser -h192.168.100.11 -p

注:192.168.100.11是mysql伺服器ip

登陸成功,但是無法執行任何操作,例如執行show databases;

會提示如下報錯:

mysql> show databases;

error 2006 (hy000): mysql server has gone away

no connection. trying to reconnect...

connection id:  197738

current database: *** none ***

error 2013 (hy000): lost connection to mysql server during query

檢視mysql伺服器錯誤日誌,有如下報錯:

131120 11:28:01 [warning] aborted connection 5058 to db: 'unconnected' user: '7cacti5' host: 'localhost' (init_connect command failed)

後來嘗試了:刪除使用者,在重新授權,也不行。

最後 查詢錯誤日誌裡的錯誤提示(init_connect command failed),總算在mysql官網找到了答案,原來這是乙個bug。官網上給出了修復方法,在此貼出,希望能幫到別人。

how to repeat:mysql -uroot -p5137

-------------

drop user 'roel'@'localhost';

drop procedure if exists loginuser;

create user 'roel'@'localhost';

grant select on *.* to 'roel'@'localhost';

delimiter //

create procedure loginuser()

begin

select user(),current_user();

select concat(current_date(),' ',current_time());

end;

// delimiter ;

set @@global.init_connect='call loginuser();';

set @@global.init_connect=''; 

query ok, 0 rows affected (0.00 sec)

然後,重新給使用者授權即可解決問題。

雖然問題搞定了,但是還不是很清楚原理,看修復過程,應該是掉用init_connect這個命令的時候出錯,然後重建了這個命令或功能。

mysql5 1 系列 關於使用者授權的乙個bug

不知道我這文章名字這樣寫是否精確,但是我在5.1.37 和 5.1.60 兩個版本上碰到了這樣的問題。以前 鏈結資料庫的使用者許可權是 grant all on to user identified by password 後來感覺這樣的許可權太大,想修改為只能從特定主機訪問特定庫,於是執行 rev...

MySql 5 1儲存過程

下面是mysql5.1儲存過程和函式的基本語法 1 儲存過程 create definer procedure sp name proc parameter characteristic routine body 2 函式 create definer function sp name func p...

MySQL 5 1 約束簡化

建立表的時候指定約束 primary key主鍵 notnull 非空default 123 預設 unique 唯一constraint fk cid foreign key lie2 references bookcategory category id 外來鍵 ondelete cascade...