接管运行 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
Run Code Online (Sandbox Code Playgroud)
我确信有一些非常简单的方法可以做到,但我也想了解发生了什么。为什么典型的方式对我不起作用?
编辑更新 作为更新:
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 (e.g. /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
Run Code Online (Sandbox Code Playgroud)
mysqladmin shutdown 确实有效,但我仍然很好奇为什么 /etc/init.d/mysql 命令不起作用。
fre*_*eit 26
mysqladmin shutdown
Run Code Online (Sandbox Code Playgroud)
应该可以关闭服务器。
我看到两种可能的可能性:
什么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
......也许你很幸运,他们只是打破了那个......
fat*_*ror 22
如果您执行 mysql 导入并覆盖 mysql 数据库本身,这是一个常见问题,例如当您可能从 mysqldump -A 备份恢复时。
这是一件好事:您可能想要备份所有 mysql 用户、权限等——但它可能会对用于干净地关闭 mysql 的 debian-sys-maint 用户等内容造成严重破坏。
虽然这个新数据库可能会同时更改 root 密码和 debian-sys-maint 密码,当然它不会自动更改 /etc/mysql/debian.cnf 中预期的 debian-sys-maint 密码。事实上,除非您还备份了该文件,否则您可能甚至不知道该密码是什么了!
重置mysql root密码(可选)
先说第一件事。如果新旧服务器的mysql root密码不同,可以使用mysqladmin进行修复:
mysql -p -u root password 'newpassword'
Run Code Online (Sandbox Code Playgroud)
但是,当您 apt-get 安装 mysql-server 时,它可能会提示您输入新的 mysql root 密码,并且您可能使用了之前使用的相同密码。
修复 debian sys maint 密码。
因此,现在查找 debian 在新服务器上安装时为您创建的 debian sys maint 密码。(您需要 sudo 因为这应该是一个高度受保护的文件。)
sudo cat /etc/mysql/debian.cnf
Run Code Online (Sandbox Code Playgroud)
现在,使用您在上面设置的 root 密码登录到 mysql:
mysql -p -u root # use your new password when prompted
Run Code Online (Sandbox Code Playgroud)
重置 debian-sys-maint 用户的密码,不要忘记刷新权限:
> SET PASSWORD FOR 'debian-sys-maint'@'localhost' = PASSWORD('samepassword');
> FLUSH PRIVILEGES;
> QUIT
Run Code Online (Sandbox Code Playgroud)
测试以确保它有效:
sudo /etc/init.d/mysql restart
Run Code Online (Sandbox Code Playgroud)
小建议
如果您需要在不关闭服务器的情况下重置服务器的 root 密码,则该用户帐户有权执行此操作——只需 cat debian.cnf 文件并使用该用户登录。注意像root一样保护这个用户帐户。
还有2个提示:
sh -x /etc/init.d/mysql restart
Run Code Online (Sandbox Code Playgroud)
这将向您显示由 init 脚本执行的命令。
安装软件包 debsums,您可以测试哪些软件包被修改(验证也可用于 RPM,但恕我直言,效果更好)。
归档时间: |
|
查看次数: |
114422 次 |
最近记录: |