在Ubuntu Lucid Lynx上重启通过aptitude安装的MySQL服务器的问题

我正在使用Ubuntu Lucid Lynx(10.04),并通过aptitude安装了MySQL服务器。 安装程序自动添加一个名为mysql的用户(它在开始时不存在于/ etc / passwd文件中,并且在安装后存在),并启动了MySQL服务器。

然后我需要修改my.cnf(为了能够远程访问MySQL服务器)。 当我重新启动MySQL服务器

$ sudo /etc/init.d/mysql重新启动

它挂起。 但是在另一个terminal上通过“top”命令显示进程表明MySQL服务器正在以root用户运行。 但my.cnf明确规定

user = mysql

然后我试了一下

$ sudo服务mysql重启

结果更糟糕。 它根本没有启动MySQL服务器。

据我所知,在以前的Ubuntu版本中,我从来没有遇到这样的问题。

所以我的问题是:

  1. 如何在Ubuntu Lucid Lynx(10.04)中使用名为mysql的用户启动MySQL服务器?

  2. 在Ubuntu中启动MySQL服务器的最可靠的方法是什么?Lucid Lynx(10.04),

    /etc/init.d/mysql启动

    要么

    服务mysql启动

    要么

    启动mysql

    有什么区别?

先谢谢你。

忠利

/etc/init.d/xxxx start用于使用SysV init脚本启动服务。 Ubuntu使用新手而不是SysV init,并且init脚本正在转换为本地新贵作业。 通常转换作业的初始化脚本会显示警告并调用新手

start xxxx与使用upstart的服务一起使用,并且不能与使用SysV init的服务一起使用。

service xxxx start自动select正确的,所以总是使用服务是安全的

据我所知,MySQL已经转换到10.04使用新贵了

谢谢Florian和user46528,

根据Florian的回答,我开始只使用“服务mysql启动”。

然后,根据user46528的答案,我开始调查这个问题。

简而言之,问题是在my.cnf中设置绑定地址到服务器的IP地址。

我发现的关键问题是:

  • 如果使用Amazon EC2,则必须将bind-address设置为私有IP地址。

  • 一旦“服务mysql启动”失败,因为Ubuntu Lucid Lynx中my.cnf中的bind-address问题,无论如何解决它,它都会一直挂起。 我需要将绑定地址设置为正确的IP地址并重启Ubuntu。

更详细的解释是:

  1. 我正在使用Amazon EC2,它具有每个实例的公有IP地址和专用IP地址,在我的例子中是Ubuntu Lucid Lynx实例。

  2. 使用my.cnf中的默认绑定地址设置(bind-address = 127.0.0.1(localhost),“service mysql stop”和“service mysql start”)。

  3. 在my.cnf中,我将绑定地址更改为Amazon EC2公共IP地址。 然后“服务MySQL停止”工作,但“服务MySQL启动”挂起。

  4. 在/var/log/mysql/error.log中,我看到“[ERROR]无法启动服务器:绑定TCP / IP端口:无法分配请求的地址”。

  5. 在my.cnf中,我将绑定地址更改为Amazon EC2私有IP地址。 然后这两个“服务MySQL停止”和“服务MySQL启动”挂起。

  6. 在my.cnf中,我将绑定地址更改回默认的127.0.0.1。 仍然“服务MySQL停止”和“服务MySQL启动”挂起。

  7. 在my.cnf中,我将绑定地址更改为Amazon EC2私有IP地址。 然后我重新启动Linux服务器(通过Amazon EC2重新启动命令)。 然后,MySQL服务器用用户名mysql正确启动。

  8. “sudo netstat -na”显示了具有状态“LISTEN”的私有IP地址的端口3306(MySQL服务器的端口)。

  9. 通过“telnet private-ip 3306”从其他Amazon EC2实例访问端口表示已连接。

再次感谢您的帮助。 没有他们,我无法解决这个问题。

真诚的Tadatoshi

如果它没有启动,即ps ax | grep mysql不会显示safe_mysqld和mysqld正在运行,请查看/var/lib/mysql/hostname.err(其中hostname是您计算机的主机名),它有一个详细的日志。 重启默认的软件包会停止,启动,但是,我不知道是否mysqld实际上并没有停止。

/etc/init.d/mysql停止

ps ax | grep mysql(确保没有进程正在运行)

/etc/init.d/mysql启动

现在,如果您正在查看进程,safe_mysqld以root身份运行,mysqld进程以mysql身份运行。 如果mysqld崩溃,safe_mysqld循环并尝试重新启动mysql。 您看到以root身份运行的进程是safe_mysqld还是mysqld?

默认的my.cnf表示port = 3306bind-address = 127.0.0.1 。 如果您没有configuration回送接口,则该绑定将失败。

要创build一个回送接口:

ifconfig lo up 127.0.0.1