1. 程式人生 > >一次mysql 5.5升級到5.6導致的ERROR 1805

一次mysql 5.5升級到5.6導致的ERROR 1805

前陣子將mysql資料庫由5.5.14升級到5.6.36,升級後所有的業務資料都正常。運行了幾天後,發現在主庫上新增使用者失敗,錯誤提示為:ERROR 1805 (HY000): Column count of mysql.user is wrong,提示mysql.user表列的數目不對。還真是個坑。下面是其解決方案。

一、故障現象

mysql> create user 'henry'@'localhost' identified by 'password';
ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 43
, found 42. The table is probably corrupted 使用grant all privileges 方式建立使用者時收到跟上述一樣的錯誤。提示列的數目不對。

二、排錯及解決故障

從上面的描述來看,說列的數目不對,因此我們升級後環境mysql.user表的建表語句
([email protected])[(none)]>show variables like 'version';
+---------------+------------+
| Variable_name | Value |
+---------------+------------+
| version | 5.5.14-log | +---------------+------------+ 1 row in set (0.01 sec) ([email protected])[(none)]>show create table mysql.user\G *************************** 1. row *************************** Table: user Create Table: CREATE TABLE `user` ( `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '
', ............ `plugin` char(64) COLLATE utf8_bin DEFAULT '', `authentication_string` text COLLATE utf8_bin, PRIMARY KEY (`Host`,`User`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges' 安裝一個新的mysql 5.6.36後檢視mysql.user表的建表語句 mysql> show variables like 'version'; +---------------+--------+ | Variable_name | Value | +---------------+--------+ | version | 5.6.36 | +---------------+--------+ 1 row in set (0.01 sec) mysql> show create table mysql.user\G *************************** 1. row *************************** Table: user Create Table: CREATE TABLE `user` ( ........... `plugin` char(64) COLLATE utf8_bin DEFAULT 'mysql_native_password', `authentication_string` text COLLATE utf8_bin, `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N', PRIMARY KEY (`Host`,`User`) ---上行為多出的列,即先前使用主從複製時password_expired列沒有 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges' --為升級後的mysql 5.6.36手工新增這個password_expired列 mysql> alter table mysql.user add column `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N'; Query OK, 10 rows affected (0.00 sec) Records: 10 Duplicates: 0 Warnings: 0 --再次建立使用者成功 mysql> grant all privileges on *.* to 'henry'@'%' identified by 'henrypwd'; Query OK, 0 rows affected (0.00 sec)

DBA牛鵬社(SQL/NOSQL/LINUX)

相關推薦

MySQL遷移並從MySQL5.6升級5.7後查詢慢了幾十倍的問題

打印 ins 狀態 sql語句 top 引用 為什麽 區別 image 起因 因為生產環境數據量越來越大,客戶越來越多,項目功能也越來越多,項目本身也越來越多,導致之前的服務器內存、硬盤都已經漸漸的不夠用了,當時出現了2種解決方案,增加服務器配置和新購服務器,但是就算是新增

mysql小版本升級

  最近護網操作比較緊,基線和漏洞檢查比較頻繁,新掃描出來的mysql漏洞需要修復,沒有啥好的修復方法,只剩下升級版本這一條路,生產環境是5.7.12,二進位制檔案直接解壓使用的,看了一下現在最新的版本,5.7.30,好像能解決所有的漏洞問題,直接就幹了。   mysql的小版本的升級,主要是有兩種方式,一種

記錄mysql5.6升級5.7出現的異常---Expression #23 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'c.commentCount' which is

### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #23 of SELECT list is not in GROUP BY clause an

mysql 5.5升級5.6導致ERROR 1805

前陣子將mysql資料庫由5.5.14升級到5.6.36,升級後所有的業務資料都正常。運行了幾天後,發現在主庫上新增使用者失敗,錯誤提示為:ERROR 1805 (HY000): Column count of mysql.user is wrong,提示mys

記錄mysql 5.7 max_allowed_packet修改失敗的問題

packet for query is too large (2010 > 1024) mysql 5.7 max_allowed_packet今天我的客戶給我反饋說報錯 ### Error querying database. Cause: com.mysql.jdbc.PacketTooBigEx

mysql 5.1升級5.6

 1、MySQL官方網站下載MySQL的YUM源,   https://dev.mysql.com/downloads/repo/yum/   在MySQL的下載頁有一個“NEW!MySQL YUM Repository”,點進去找相對應的系統rpm包進行下載 如果你的Lin

rhel6.5升級python3.6.1

建立安裝目錄: $ sudo mkdir /usr/local/python-3.6 下載python安裝包: $ cd /opt/ $ sudo wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz 解

unhappy考試(10.5

orz orz AK爺 紅名爺 論如何爆成120。。。。。 首先是如何B題拿20分 驚訝地發現只有20分 一番魔改之後 讓我們看看發生了什麼吧!!! MDZZ,輸出個毛線標記啊! 然後我們還是發現,有一個點T掉了???? 交了一發

PHP 5.4升級5.6後訪問SQLServer失敗

首先是升級後根本忘記還有SQLServer連線這回事了。結果客戶端莫名其妙報錯了。一直覺得是資料庫自己的問題。連上去一看,原來報告sqlsvr_connect不能用了。恍然大悟。1. 修改php.iniextension=php_mssql.dllextension=php_

物理機安裝centos7.5 出現黑屏的問題

gem oot images basic 題解 load 語言 upload 界面 記一次物理機安裝centos7.5 出現黑屏的問題 一、問題出現 使用物理機安裝centos7.5,選擇Install CentOS Linux7之後,並沒有出現選擇語言的界面,而是只出現了

記錄MySQL升級的運維實踐

前言 MySQL5.7新增了不少新功能,比如:Online DDL、多源複製、增強半同步、表空間傳輸、sys 庫、Group Replication等。最近終於等到了一個機會,將MySQL升級到5.7,很是興奮不已,嘻嘻。 MySQL升級的概述 MySQL升級的實質: 對資料字典的升級 資料字典有

centos6.5:gcc 升級(5.2.0)過程記錄

安裝前準備 如果系統中還沒有安裝gcc,g++編譯器(4.4.7),要先安裝 #安裝舊版本的gcc、c++編譯器 sudo yum install gcc gcc-c++ 編譯安裝 # 下載gcc 5.2.0原始碼 wget http://f

記錄MySQL進程崩潰,無法重啟故障排查

not pool function 解決 variables fail data class 緩沖 最近程序在跑著沒幾天,突然訪問不了,查看應用進程都還在。只有數據庫的進程down掉了。於是找到日誌文件看到如下錯誤 2017-07-24 01:58:53 19934 [N

mysql上 having的使用問題

bsp 執行 b- 報錯 img cnblogs www. clas span 在mysql上執行了這個語句:   SELECT id, uid, message, u_uid, create_time FROM message GROUP BY u_uid HAVING

mysql事故---紀念逝去的一上午

not 路徑 內部 oca oss ica relay its scala 虛擬機關機後第二天mysql起不來,回想一下我關機前和關機後的操作發現:關機前沒關閉mysqld服務就直接init 0了,關機後將虛擬機內存由1G降到724M。筆者保證再也做過別的騷操作了。

mysql中文字符亂碼的問題排查

mysql mysql中文亂碼 mysql字符集 今天開發反應兩樣的程序往一個庫裏面插入數據正常,往另外一個庫裏面插入數據有亂碼。第一反應就是兩個數據庫關於字符集的配置不一樣。在兩個庫分別查看參數:show variables like "%char%";+--------------------

小記mysql啟動失敗沒有日誌的處理

note start inux evc mysql do it 目錄 star linux 本來mysql好的,之前清理了一次tmp下的東西,mysql在查詢的時候提示: Can‘t create/write to file ‘/tmp/ib0n3frL 然後停

MySQL存儲過程和遊標的使用

MySQL存儲過程 MySQL遊標 需求: 有三張表:Player、Consumption、Consumption_other。Player表中記錄用戶信息(playerid、origin等字段),Consumption和Consumption_other記錄用戶的消費信息。現需要根據Playe

mysql數據庫刪除恢復的案例

mysql 數據恢復 linux emmmmm 今天晚上十一點有個朋友說他的數據庫刪除了。是昨天刪除的。我就日了mmp 了數據庫不做備份的??????????what fuck 那就登陸服務器看看吧看到還有一個4 月22 號的。那麽就新建一個數據庫導入進去唄導入導入之後改下源代碼看看能不能訪問e

mysql無緣無故的掛掉,使用innodb_force_recovery修復

一次mysql無緣無故的掛掉 最近遇到了一個比較奇怪的問題,在大家都在睡午覺的時候,突然手機響了起來,我為了不吵醒其他人拿起了手機看了看監控信息,我去,居然是數據庫down了,這是一臺運行很久的數據庫服務器,當我登進去服務器的時候,嘗試重啟mysql,但是報(Starting MySQL..... ER