1、原因:可能是/usr/local/mysql/mysql.pid文件沒(méi)有寫(xiě)的權(quán)限;
創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供廬江企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為廬江眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
解決方法 :給予權(quán)限,執(zhí)行 “chmod 775 /usr/local/mysql/ -R” 然后重新啟動(dòng)mysqld。
2、原因:可能進(jìn)程里已經(jīng)存在mysql進(jìn)程;
解決方法:用命令“ps -ef|grep mysqld”查看是否有mysqld進(jìn)程,如果有使用“kill -9 進(jìn)程號(hào)”殺死,然后重新啟動(dòng)mysqld。
3、原因:可能是第二次在機(jī)器上安裝mysql,有殘余數(shù)據(jù)影響了服務(wù)的啟動(dòng);
解決方法:去mysql的數(shù)據(jù)目錄/data看看,如果存在mysql-bin.index,就趕快把它刪除掉吧,它就是罪魁禍?zhǔn)琢恕?/p>
4、原因:mysql在啟動(dòng)時(shí)沒(méi)有指定配置文件時(shí)會(huì)使用/etc/my.cnf配置文件,請(qǐng)打開(kāi)這個(gè)文件查看在[mysqld]節(jié)下有沒(méi)有指定數(shù)據(jù)目錄(datadir);
解決方法:請(qǐng)?jiān)赱mysqld]下設(shè)置這一行:datadir = /usr/local/mysql/data。
5、原因:skip-federated字段問(wèn)題;
解決方法:檢查一下/etc/my.cnf文件中有沒(méi)有沒(méi)被注釋掉的skip-federated字段,如果有就立即注釋掉吧。
6、原因:錯(cuò)誤日志目錄不存在;
解決方法:使用“chown” “chmod”命令賦予mysql所有者及權(quán)限。
7、原因:如果是centos系統(tǒng),默認(rèn)會(huì)開(kāi)啟selinux;
解決方法:關(guān)閉它,打開(kāi)/etc/selinux/config,把SELINUX=enforcing改為SELINUX=disabled后存盤(pán)退出重啟機(jī)器試試。
8、原因:log-bin路徑錯(cuò)誤;
解決方法:查看對(duì)應(yīng)數(shù)據(jù)庫(kù)下的error log,例如我的數(shù)據(jù)庫(kù)為,/usr/local/mysql/var目錄,其下的localhost.localdomain.err為錯(cuò)誤日志,只要把其下的ib_logfile*刪除即可,重啟mysql即可。
一、Linux下MySQL的啟動(dòng)與停止
1、Mysql啟動(dòng)、停止、重啟常用命令
a、啟動(dòng)方式
(1)使用 service 啟動(dòng):
[root@localhost /]# service mysqld start (5.0版本是mysqld)
[root@szxdb etc]# service mysql start (5.5.7版本是mysql)
(2)使用 mysqld 腳本啟動(dòng):
/etc/inint.d/mysqld start
(3)使用 safe_mysqld 啟動(dòng):
safe_mysqld
b、停止方式
(1)使用 service 啟動(dòng):service mysqld stop
(2)使用 mysqld 腳本啟動(dòng):/etc/inint.d/mysqld stop
(3)mysqladmin shutdown
c、重啟方式
(1)使用 service 啟動(dòng):
service mysqld restart
service mysql restart (5.5.7版本命令)
(2)使用 mysqld 腳本啟動(dòng):
/etc/init.d/mysqld restart
1、DTS數(shù)據(jù)同步報(bào)錯(cuò)
2、源端用戶user1擁有所有database的權(quán)限,包括select權(quán)限
3、使用user1用戶登錄源端MySQL,當(dāng)指定database為database1,select被拒絕
4、從MySQL的物理表文件看,表的.frm和.ibd文件是正常的
5、將報(bào)錯(cuò)的表table1備份為table2,刪除table1,select information_schema.columns、information_schema.tables可執(zhí)行且不報(bào)錯(cuò)
6、將table2重命名為table1,select information_schema.columns、information_schema.tables再次報(bào)一樣的錯(cuò)誤
7、將table1重命名為table2,select information_schema.columns、information_schema.tables可執(zhí)行且不報(bào)錯(cuò)
8、原因判斷
參考:
其他用戶也遇到了與MySQL對(duì)象相關(guān)的information_schema.columns、information_schema.tables的select報(bào)錯(cuò),但是涉及的MySQL對(duì)象為view,而我們這里為table。
view可以指定definer等,而table1的創(chuàng)建語(yǔ)法中沒(méi)有找到這樣的字眼。但是推測(cè)以某一種方式與definer相關(guān)聯(lián)。
9、輔證
在執(zhí)行一個(gè)sql文件時(shí) mysql -h 127.0.0.1 -uroot study -e"source b.sql" ,報(bào)錯(cuò) MySQL server has gone away 。上網(wǎng)查解決辦法,按照網(wǎng)上的解決方法一步步操作,最終找到原因并且解決了,覺(jué)得有必要總結(jié)下這個(gè)問(wèn)題發(fā)生的原因及解決辦法,避免后面再繼續(xù)踩坑。
執(zhí)行以下命令,查看mysql的運(yùn)行時(shí)長(zhǎng)。
uptime數(shù)值很大,表明mysql服務(wù)運(yùn)行很久,說(shuō)明最近MySQL服務(wù)器沒(méi)有重啟過(guò)。
或者查看MySQL的報(bào)錯(cuò)日志,看看有沒(méi)有重啟的信息。
如果日志沒(méi)有相關(guān)信息,也表明mysql服務(wù)最近沒(méi)有重啟過(guò),可以繼續(xù)檢查下面幾項(xiàng)情況。
如果程序使用的是長(zhǎng)連接,則這種情況的可能性會(huì)比較大。
即,某個(gè)長(zhǎng)連接很久沒(méi)有新的請(qǐng)求發(fā)起,達(dá)到了server端的timeout,被server強(qiáng)行關(guān)閉。
此后再通過(guò)這個(gè)connection發(fā)起查詢的時(shí)候,就會(huì)報(bào)錯(cuò)server has gone away。
如下命令設(shè)置連接超時(shí)為5秒。
再執(zhí)行 SELECT NOW(); ,通過(guò)這個(gè)connection發(fā)起查詢的時(shí)候,就會(huì)報(bào)錯(cuò)server has gone away。
實(shí)際上wait_timeout=28800,不是造成文章開(kāi)頭的原因。
這種情況和情況2相似,只是發(fā)起者是DBA或者其他job。發(fā)現(xiàn)有長(zhǎng)時(shí)間的慢查詢執(zhí)行kill xxx導(dǎo)致。
當(dāng)查詢的結(jié)果集超過(guò) max_allowed_packet 也會(huì)出現(xiàn)這樣的報(bào)錯(cuò)。
查看執(zhí)行SQL執(zhí)行文件大小是否超過(guò) max_allowed_packet ,如果超過(guò)則需要調(diào)整參數(shù),或者優(yōu)化語(yǔ)句。
計(jì)算發(fā)現(xiàn)SQL執(zhí)行文件最大只能是16M,而文章開(kāi)頭執(zhí)行的a.sql有24M。
修改參數(shù),max_allowed_packet 調(diào)整為28M。
重新再執(zhí)行`mysql -h 127.0.0.1 -uroot study -e"source b.sql"``成功,說(shuō)明原因是情況4造成的。