博客專欄

        EEPW首頁(yè) > 博客 > 如何在Linux下解決MySQL的兩個(gè)基本問(wèn)題

        如何在Linux下解決MySQL的兩個(gè)基本問(wèn)題

        發(fā)布人:only1 時(shí)間:2020-09-24 來(lái)源:工程師 發(fā)布文章

        在我們學(xué)習(xí)linux運(yùn)維時(shí),時(shí)常會(huì)遇到各種各樣的問(wèn)題,那么在使用mysql基本基本上會(huì)遇到主要的兩個(gè)問(wèn)題,那到底是什么問(wèn)題?今天就讓我們扣丁學(xué)堂為大家揭開神秘的面紗,為大家歸納整理了一下我們?cè)趯W(xué)習(xí)的過(guò)程中會(huì)遇到的基本的問(wèn)題,并且做以詳細(xì)的說(shuō)明。

          

        1.第一次起動(dòng)mysql是沒(méi)有問(wèn)題的.對(duì)mysql做了一些操作,特別是刪除mysql中一些不要的帳號(hào)后,重新起動(dòng)mysql會(huì)遇到這樣的問(wèn)題  

        #/etc/init.d/mysqldrestart  

        stoppingmysql[ok]  

        TimeouterroroccurredtryingtostartMySQLDaemon.[failure]  

        但是這個(gè)時(shí)候mysql實(shí)際上已經(jīng)起動(dòng)了,因?yàn)橛胣etstat-ln命令去看3306端口已經(jīng)起動(dòng).使用mysql-uroot-ppassword也能連接到數(shù)據(jù)庫(kù).  

        這實(shí)際上是mysql-3.x的一個(gè)bug(具體可以去看mysql的bugzilla和redhat的bugzilla).  

        是什么原因?qū)е逻B接超時(shí)呢?  

        我們不妨先看看/etc/init.d/mysqld起動(dòng)腳本是如何工作的,注意下面的一段  

        #Ifyou'veremovedanonymoususers,thislinemustbechangedto  

        #useauserthatisallowedtopingmysqld.  

        ping="/usr/bin/mysqladmin-uUNKNOWN_MYSQL_USERping"  

        #Spinforamaximumoftensecondswaitingfortheservertocomeup  

        if[$ret-eq0];then  

        forxin12345678910;do  

        if[-n"`$ping2>/dev/null`"];then  

        break;  

        else  

        sleep1;  

        fi  

        done  

        if!([-n"`$ping2>/dev/null`"]);then  

        echo"TimeouterroroccurredtryingtostartMySQL  

        Daemon."action$"Starting$prog:"/bin/false  

        else  

        action$"Starting$prog:"/bin/true  

        fi  

        else  

        action$"Starting$prog:"/bin/false  

        fi  

        [$ret-eq0]&&touch/var/lock/subsys/mysqld  

        return$ret  

        我們看到,腳本判斷mysql是否起動(dòng),使用的是mysqladminping命令.  

        而這個(gè)命令想要正確執(zhí)行是需要能夠登錄mysql的.現(xiàn)在一些默認(rèn)帳號(hào)已經(jīng)刪除,而且其它帳號(hào)已經(jīng)設(shè)置了密碼(默認(rèn)沒(méi)有設(shè)置密碼).于是它沒(méi)有辦法連接到mysql.  

        不妨使用下面的命令測(cè)試一下  

        #mysqladmin-uroot-ppasswordping  

        mysqlalive  

        當(dāng)你提供了帳號(hào)和密碼時(shí),它的ping命令就可以正確執(zhí)行了.  

        這個(gè)bug在mysql新出的mysql4.x可以解決.  

        但是RH9到FC3一直使用的是mysql3.x(不過(guò)mysql官方好象才推出mysql4.1,FC需要考慮問(wèn)題性).  

        于是我用了下面的辦法臨時(shí)解決.  

        a)建立一個(gè)帳號(hào),不設(shè)置密碼,不給任何權(quán)限.  

        b)修改/etc/init.d/mysqld  

        下面我給出具體操作  

        #mysql-uroot-ppasswd  

        mysql>GRANTselectONtest.*TOdaemon@localhost  

        mysql>revokeselectontest.*fromdaemon@localhost  

        打開/etc/init.d/mysqld  

        把下面這行  

        ping="/usr/bin/mysqladmin-uUNKNOWN_MYSQL_USERping"  

        修改為  

        ping="/usr/bin/mysqladmin-udaemonping"  

        保存,退出.  

        重新起動(dòng)mysql  

        #/etc/init.d/mysqldrestart  

        StoppingMySQL:[OK]  

        StartingMySQL:[OK]  

        如果你的第二行仍然是failure的話.再執(zhí)行下面的命令  

        #/etc/init.d/mysqldstart  

        這時(shí)應(yīng)該式ok了.  

        如果這樣可以ok的話.  

        那么你需要修改/etc/init.d/mysqld,  

        在restart函數(shù)的start后面再加一個(gè)start就可了.  

        2.即使剛安裝的mysql再起動(dòng)后,去看日志,給給出下面的這些信息  

        CannotinitializeInnoDBas'innodb_data_file_path'isnotset.  

        IfyoudonotwanttousetransactionalInnoDBtables,addaline  

        skip-innodb  

        tothe[mysqld]sectionofinitparametersinyourmy.cnf  

        ormy.ini.IfyouwanttouseInnoDBtables,addtothe[mysqld]  

        section,forexample,  

        innodb_data_file_path=ibdata1:10M:autoextend  

        Buttogetgoodperformanceyoushouldadjustforyourhardware  

        theInnoDBstartupoptionslistedinsection2at  

        這是因?yàn)槟J(rèn)的數(shù)據(jù)庫(kù)起動(dòng)腳本需要加載innodb數(shù)據(jù)庫(kù),但是mysql在做初始話時(shí)并沒(méi)有初始化時(shí),并沒(méi)有加載這樣的數(shù)據(jù)庫(kù).  

        因此這里有兩種解決辦法:使用和不使用innodb.  

        我們先看不使用innodb的辦法.  

        其實(shí)這個(gè)方法就是跳過(guò)innodb的方法.  

        在/etc/my.cnf文件的mysqld區(qū)域增加一行  

        skip-innodb就可以了.  

        如果我們需要使用innodb呢?  

        那么可在/etc/my.cnf文件的mysqld區(qū)域增加下面幾行  

        innodb_data_home_dir=/var/lib/mysql/  

        innodb_data_file_path=ibdata1:10M:autoextend  

        innodb_log_group_home_dir=/var/lib/mysql/  

        innodb_log_arch_dir=/var/lib/mysql/  

        set-variable=innodb_buffer_pool_size=16M  

        set-variable=innodb_additional_mem_pool_size=2M  

        set-variable=innodb_log_file_size=5M  

        set-variable=innodb_log_buffer_size=8M  

        innodb_flush_log_at_trx_commit=1  

        set-variable=innodb_lock_wait_timeout=50  

        保存,退出.重啟起動(dòng)mysql,再去看日志,應(yīng)該不會(huì)再提示有關(guān)innodb的問(wèn)題了.  

        上面就是我們扣丁學(xué)堂關(guān)于linux運(yùn)維在MySQL方面遇到的問(wèn)題做出的詳細(xì)的舉例說(shuō)明,我們扣丁學(xué)堂不僅在linux方面擁有獨(dú)特的教學(xué)方法和方式,更是在JAVA、Python等十幾種語(yǔ)言方面都有杰出的老師以及配套的學(xué)習(xí)資料,具備了這么多豐厚的資源,你是否心動(dòng)了,心動(dòng)不如行動(dòng),趕緊行動(dòng)起來(lái),在我們扣丁學(xué)堂保證你會(huì)有不一樣的收獲,首先第一步就是加入我們的學(xué)習(xí)交流群吧!扣丁學(xué)堂Linux技術(shù)交流群:659974587。

        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。

        模擬電路相關(guān)文章:模擬電路基礎(chǔ)




        關(guān)鍵詞:

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 柳州市| 叙永县| 湘潭县| 华亭县| 金阳县| 文登市| 河曲县| 鄢陵县| 常州市| 正阳县| 黑山县| 宝清县| 乌苏市| 贡山| 本溪市| 卢龙县| 奈曼旗| 即墨市| 延边| 久治县| 益阳市| 乡城县| 张家界市| 广丰县| 临江市| 拉孜县| 秭归县| 苗栗市| 大邑县| 呼和浩特市| 普兰县| 泗洪县| 萨迦县| 长乐市| 瓦房店市| 灵山县| 金塔县| 方山县| 通河县| 政和县| 宁明县|