欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂為你揭秘如何在Linux下解決MySQL的兩個基本問題

2018-01-19 09:38:54 1324瀏覽

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



       1.第一次起動mysql是沒有問題的.對mysql做了一些操作,特別是刪除mysql中一些不要的帳號后,重新起動mysql會遇到這樣的問題

#/etc/init.d/mysqldrestart

stoppingmysql[ok]

TimeouterroroccurredtryingtostartMySQLDaemon.[failure]

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

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

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

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

#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是否起動,使用的是mysqladminping命令.

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

不妨使用下面的命令測試一下

#mysqladmin-uroot-ppasswordping

mysqlalive

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

這個bug在mysql新出的mysql4.x可以解決.

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

于是我用了下面的辦法臨時解決.

a)建立一個帳號,不設(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"

保存,退出.

重新起動mysql

#/etc/init.d/mysqldrestart

StoppingMySQL:[OK]

StartingMySQL:[OK]

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

#/etc/init.d/mysqldstart

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

如果這樣可以ok的話.

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

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

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

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ù)庫起動腳本需要加載innodb數(shù)據(jù)庫,但是mysql在做初始話時并沒有初始化時,并沒有加載這樣的數(shù)據(jù)庫.

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

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

其實(shí)這個方法就是跳過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

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

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

關(guān)注微信公眾號獲取更多的學(xué)習(xí)資料



查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>

標(biāo)簽: linux培訓(xùn) linux視頻教程 linux開發(fā)工程師

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部