接pipe运行MySQL的Debian Etch Web服务器。
我通常启动,停止并重新启动msyql使用:
/etc/init.d/mysql重新启动
出于某种原因在这个设置我得到以下内容:
:〜#/etc/init.d/mysql停止
停止MySQL数据库服务器:mysqld失败!
mysql进程正常运行:
:~# ps aux | grep mysql root 2045 0.0 0.1 2676 1332 ? S Jun25 0:00 /bin/sh /usr/bin/mysqld_safe mysql 2082 0.6 10.7 752544 111188 ? Sl Jun25 18:49 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock root 2083 0.0 0.0 1568 504 ? S Jun25 0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld root 11063 0.0 0.0 2856 716 pts/0 S+ 17:29 0:00 grep mysql
我确定有一些非常简单的方法来做到这一点,但我想了解发生了什么。 为什么典型的方式不适合我?
编辑更新作为更新:
JBRLSVR001:/var/log/mysql# mysqladmin shutdown JBRLSVR001:/var/log/mysql# dpkg --list mysql\* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-============================================-============================================-======================================================================================================== un mysql-client <none> (no description available) un mysql-client-4.1 <none> (no description available) ii mysql-client-5.0 5.0.32-7etch8 mysql database client binaries ii mysql-common 5.0.32-7etch8 mysql database common files (eg /etc/mysql /my.cnf) un mysql-common-4.1 <none> (no description available) ii mysql-server 5.0.32-7etch8 mysql database server (meta package depending on the latest version) un mysql-server-4.1 <none> (no description available) ii mysql-server-5.0 5.0.32-7etch8 mysql database server binaries
mysqladmin关机确实工作,但我仍然好奇为什么/etc/init.d/mysql命令不起作用。
mysqladmin shutdown
应该closures服务器。
我看到两种可能的可能性:
dpkg --list mysql\*
说什么?
/var/log/mysql.err说什么? 或者其他的MySQL日志?
编辑:
所以mysqladmin shutdown
工作?
据此,安装mysql-server包(mysql-server-5.0; mysql-server包可能只是一个存根)。 那么他们可能已经安装了它? 运行debsums mysql-server-5.0
可能会告诉你更多。 dpkg --listfiles mysql-server-5.0
也可以帮助…
/etc/init.d/mysql实际上是什么? 我没有检查特定版本的软件包,但它应该尝试使用mysqladmin shutdown
…也许你很幸运,他们只是打破了… …
这是一个常见的问题,如果你做一个mysql导入并覆盖mysql数据库本身,例如,当你可能从mysqldump -A备份恢复。
这是一件好事:你可能想要备份所有的mysql用户,权限等等,但是这会对debian-sys-maint用户干净地closuresmysql造成严重破坏。
虽然这个新的数据库可能会改变root密码和debian-sys-maint密码,当然它不会自动更改/etc/mysql/debian.cnf中的预期的debian-sys-maint密码。 事实上,除非你也备份了这个文件,否则你甚至不知道那个密码是什么!
重置mysql root密码(可选)
首先是事情。 如果旧的和新的服务器的mysql root密码不同,你可以使用mysqladmin来修复它:
mysql -p -u root password 'newpassword'
但是,当你安装mysql-server的时候,它可能会提示你input新的mysql root密码,你可能使用的是和以前一样的。
修复debian sys maint密码。
所以,现在查看Debian在新服务器上安装Debian时为您创build的debian sys maint密码。 (你需要sudo,因为这应该是一个高度保护的文件。)
sudo cat /etc/mysql/debian.cnf
现在,使用上面设置的root密码login到mysql:
mysql -p -u root # use your new password when prompted
重置debian-sys-maint用户的密码,不要忘记刷新权限:
> SET PASSWORD FOR 'debian-sys-maint'@'localhost' = PASSWORD('samepassword'); > FLUSH PRIVILEGES; > QUIT
testing,以确保它的工作原理:
sudo /etc/init.d/mysql restart
快速提示
如果您需要重置服务器的根密码而不必closures服务器,则该用户帐户有权执行此操作 – 只需inputdebian.cnf文件并使用该用户login即可。 注意保护这个用户帐户就像root一样。
2更多提示:
sh -x /etc/init.d/mysql restart
这将显示由init脚本执行的命令。
安装软件包debsums,你可以testing哪些软件包被修改(validation也可用于RPM,但恕我直言,工作更好)。
pkill mysql
肯定会工作
假设这个软件包有点奇怪,这个问题可能是pid文件。 我怀疑,新的软件包或编译的安装没有创build/ var / run / mysql /或任何Debian标准的pid文件被写入,或者init脚本正在寻找另一个地方的mysqld.pid文件。 如果你可以修复init / pid文件不匹配的情况,应该可以。
mysql关机脚本使用debian-sys-maint用户通过从/etc/mysql/debian.cnf中读取用户的密码来运行“mysqladmin shutdown”。 你应该检查这个文件是否存在,你可以像这个用户那样运行mysqladmin shutdown。
使用“pkill mysql”也可能会丢失你的数据,特别是如果被调用为“pkill -9”:(
我还build议使用'sh -x'来查看init脚本的问题,也可以查看MySQL的错误日志(/ var / log / mysql 或 / var / lib / mysql,取决于configuration),看它是否卡在一个非常长的查询或一些东西,因此不愿意退出优雅地相当。
为了跟进对你的问题的评论,我会写下一个完整的答案:
问题是默认套接字是带有MySQL源文件的/tmp/mysql.sock
,而带有Debian二进制文件的/var/run/mysqld/mysqld.sock
。
解决scheme是通过提供良好的socket=
来修复 /etc/mysql/debian.cnf
的套接字path 。 或者保留它,但是改变/etc/mysql/my.cnf
的一个。
这是我如何发现这一点:在/etc/init.d/mysql
当出现«失败»消息,你有这样的行称为:
echo -e "$ps_alive processes alive and '$MYADMIN ping' resulted in\n$ping_output\n" | $ERR_LOGGER -p daemon.debug
这指出我到$MYADMIN ping
,这是mysqladmin --defaults-file=/etc/mysql/debian.cnf ping
。 运行这个命令结束于:
/ usr / bin / mysqladmin:在'localhost'连接服务器失败
错误:'无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'(2)'
检查mysqld是否正在运行,并且套接字'/var/run/mysqld/mysqld.sock'存在!
所以我看了一下/etc/mysql/debian.cnf
,发现那个socket是坏的。
使用以下命令:
$ mysqladmin shutdown
这应该在/ usr / bin目录中可用。
你需要成为一个超级用户来启动在debian上停止mysql(和大多数其他服务)。
不知道你是否已经…如果不是,你需要做一个