"); //-->
在我们学习linux运维时,时常会遇到各种各样的问题,那么在使用mysql基本基本上会遇到主要的两个问题,那到底是什么问题?今天就让我们扣丁学堂为大家揭开神秘的面纱,为大家归纳整理了一下我们在学习的过程中会遇到的基本的问题,并且做以详细的说明。

1.第一次起动mysql是没有问题的.对mysql做了一些操作,特别是删除mysql中一些不要的帐号后,重新起动mysql会遇到这样的问题
#/etc/init.d/mysqldrestart
stoppingmysql[ok]
TimeouterroroccurredtryingtostartMySQLDaemon.[failure]
但是这个时候mysql实际上已经起动了,因为用netstat-ln命令去看3306端口已经起动.使用mysql-uroot-ppassword也能连接到数据库.
这实际上是mysql-3.x的一个bug(具体可以去看mysql的bugzilla和redhat的bugzilla).
是什么原因导致连接超时呢?
我们不妨先看看/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命令.
而这个命令想要正确执行是需要能够登录mysql的.现在一些默认帐号已经删除,而且其它帐号已经设置了密码(默认没有设置密码).于是它没有办法连接到mysql.
不妨使用下面的命令测试一下
#mysqladmin-uroot-ppasswordping
mysqlalive
当你提供了帐号和密码时,它的ping命令就可以正确执行了.
这个bug在mysql新出的mysql4.x可以解决.
但是RH9到FC3一直使用的是mysql3.x(不过mysql官方好象才推出mysql4.1,FC需要考虑问题性).
于是我用了下面的办法临时解决.
a)建立一个帐号,不设置密码,不给任何权限.
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的话.再执行下面的命令
#/etc/init.d/mysqldstart
这时应该式ok了.
如果这样可以ok的话.
那么你需要修改/etc/init.d/mysqld,
在restart函数的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
这是因为默认的数据库起动脚本需要加载innodb数据库,但是mysql在做初始话时并没有初始化时,并没有加载这样的数据库.
因此这里有两种解决办法:使用和不使用innodb.
我们先看不使用innodb的办法.
其实这个方法就是跳过innodb的方法.
在/etc/my.cnf文件的mysqld区域增加一行
skip-innodb就可以了.
如果我们需要使用innodb呢?
那么可在/etc/my.cnf文件的mysqld区域增加下面几行
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,再去看日志,应该不会再提示有关innodb的问题了.
上面就是我们扣丁学堂关于linux运维在MySQL方面遇到的问题做出的详细的举例说明,我们扣丁学堂不仅在linux方面拥有独特的教学方法和方式,更是在JAVA、Python等十几种语言方面都有杰出的老师以及配套的学习资料,具备了这么多丰厚的资源,你是否心动了,心动不如行动,赶紧行动起来,在我们扣丁学堂保证你会有不一样的收获,首先第一步就是加入我们的学习交流群吧!扣丁学堂Linux技术交流群:659974587。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
ZLG7289 DEMO板操作说明
Tower Semiconductor推出硅光技术助力AI基础设施
ZLG7289B串行接口LED数码管及键盘管理器件数据手册
美陆军调整陆航采办计划
美研究“多箭一星”发射技术
ZLG7289B串行接口LED数码管及键盘管理器件常见问题解答FAQ
ZLG7289A 8位LED及8×8键盘控制芯片选型指南
长延时光控开关电路
TechInsights拆解:华硕Rog Ally X 2024
停电照明灯电路
美空军计划未来10年采购2000架无人机
【传感器技术新品】闪耀慕尼黑上海光博会! 开启智能感知新未来
DARPA投入3500万美元研发创新光子集成电路
美批准建造首批DD(X)驱逐舰
光控定时开关电路
即将来临的活动
AI芯片需求激增,封装材料短缺冲击韩国半导体产业
赋能产业高质量发展!“2026 IICIE国际集成电路创新博览会”会议论坛重磅升级
今天真是蔫啊!
[推荐]51 flash文件系统DIY(5)___FAT揭秘
电路原理煤气炉熄火报警器电路
科技巨头AI投资超过中型国家GDP下一波「外溢红利」聚焦IC设计服务
美研制新概念载人小型深潜器
2025年全球平板电脑市场增长10%
ZLG500模块系列产品简介
[推荐]51 flash文件系统DIY(6)___FAT揭秘
MP3市场三分天下 谁能独领风骚
川普力推“美国制造”却反噬本土工厂? 中企强势压境爆争议
延迟节能灯电路
星链被断线惨了 俄急部署替代卫星系统