不知道我這文章名字這樣寫是否精確,但是我在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 -p5137set @@global.init_connect='';-------------
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();';
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...