知识大全 Linux下解决MySQL服务的两个基本问题
Posted 命令
篇首语:水往下流,人争上游。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Linux下解决MySQL服务的两个基本问题相关的知识,希望对你有一定的参考价值。
Linux下解决MySQL服务的两个基本问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
使用mysql基本基本上会遇到主要的两个问题
第一次起动mysql是没有问题的 对mysql做了一些操作 特别是删除mysql中一些不要的帐号后 重新起动mysql会遇到这样的问题
#/etc/init d/mysqld restartstopping mysql [ok]Timeout error occurred trying to start MySQL Daemon [failure]
但是这个时候mysql实际上已经起动了 因为用netstat ln命令去看 端口已经起动 使用mysql u root p password也能连接到数据库
这实际上是mysql x的一个bug(具体可以去看mysql的bugzilla和redhat的bugzilla)
是什么原因导致连接超时呢?
我们不妨先看看/etc/init d/mysqld起动脚本是如何工作的 注意下面的一段
# If you ve removed anonymous users this line must be changed to# use a user that is allowed to ping mysqld ping= /usr/bin/mysqladmin uUNKNOWN_MYSQL_USER ping # Spin for a maximum of ten seconds waiting for the server to e up if [ $ret eq ]; then for x in ; do if [ n `$ping > /dev/null` ]; then break; else sleep ; fi done
if !([ n `$ping > /dev/null` ]); then echo Timeout error occurred trying to start MySQLDaemon action $ Starting $prog: /bin/false else action $ Starting $prog: /bin/true fi else action $ Starting $prog: /bin/false fi [ $ret eq ] && touch /var/lock/subsys/mysqld return $ret
我们看到 脚本判断mysql是否起动 使用的是mysqladmin ping命令
而这个命令想要正确执行是需要能够登录mysql的 现在一些默认帐号已经删除 而且其它帐号已经设置了密码(默认没有设置密码) 于是它没有办法连接到mysql
不妨使用下面的命令测试一下
#mysqladmin u root ppassword pingmysql alive
当你提供了帐号和密码时 它的ping命令就可以正确执行了
这个bug在mysql新出的mysql x可以解决
但是RH 到FC 一直使用的是mysql x(不过mysql官方好象才推出mysql FC需要考虑问题性)
于是我用了下面的办法临时解决
a)建立一个帐号 不设置密码 不给任何权限 b)修改/etc/init d/mysqld
下面我给出具体操作
#mysql u root p passwdmysql>GRANT select ON test * TO daemon@localhost
mysql>revoke select on test * from daemon@localhost
打开/etc/init d/mysqld
把下面这行
ping= /usr/bin/mysqladmin uUNKNOWN_MYSQL_USER ping
修改为
ping= /usr/bin/mysqladmin udaemon ping
保存 退出
重新起动mysql
#/etc/init d/mysqld restartStopping MySQL: [ OK ]Starting MySQL: [ OK ]
如果你的第二行仍然是failure的话 再执行下面的命令
#/etc/init d/mysqld start
这时应该式ok了
如果这样可以ok的话
那么你需要修改/etc/init d/mysqld
在restart函数的start后面再加一个start就可了
即使刚安装的mysql再起动后 去看日志 给给出下面的这些信息
Cannot initialize InnoDB as innodb_data_file_path is not set If you do not want to use transactional InnoDB tables add a lineskip innodbto the [mysqld] section of init parameters in your for my ini If you want to use InnoDB tables add to the [mysqld]section for example innodb_data_file_path = ibdata : M:autoextendBut to get good performance you should adjust for your hardwarethe InnoDB startup options listed in section at
这是因为默认的数据库起动脚本需要加载innodb数据库 但是mysql在做初始话时并没有初始化时 并没有加载这样的数据库
因此这里有两种解决办法:使用和不使用innodb
我们先看不使用innodb的办法
其实这个方法就是跳过innodb的方法
在/etc/f文件的mysqld区域增加一行
skip innodb就可以了
如果我们需要使用innodb呢?
那么可在/etc/f文件的mysqld区域增加下面几行
innodb_data_home_dir = /var/lib/mysql/innodb_data_file_path = ibdata : M:autoextendinnodb_log_group_home_dir = /var/lib/mysql/innodb_log_arch_dir = /var/lib/mysql/set variable = innodb_buffer_pool_size= Mset variable = innodb_additional_mem_pool_size= Mset variable = innodb_log_file_size= Mset variable = innodb_log_buffer_size= Minnodb_flush_log_at_trx_mit= set variable = innodb_lock_wait_timeout=
保存 退出 重启起动mysql 再去看日志
cha138/Article/program/MySQL/201311/29509相关参考
Linux下C连接MySQL出现错误解决一例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在L
Linux下MySQL的管理与配置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! MySQL服务
Linux下MySQL的一些基本使用方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ]Lin
Linux环境MySQL服务器级优化讲解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘要本节
一总结一下 linux下启动mysql的命令 mysqladminstart /ect/initd/mysqlstart(前面为mysql的安装路径) linux下重启mysql的命令
修改Linux下MySQL编码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 默认登录mysql
Linux下MySql免安装 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 解压/usr/loc
linux下MySQL源码包的安装 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! linux下M
在Linux环境下安装Mysql 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一引言 想使用
linux系统下MYSQL备份恢复 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据库备份是非