科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道4.15.2 启动MySQL服务器的问题

4.15.2 启动MySQL服务器的问题

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

无论你使用哪个方法启动服务器,如果它没有正确启动,检查日志文件看你是否能发现为什么。日志文件位于数据目录(对二进制分发一般是“/usr/local/mysql/data”,对源代码分发是“/usr/local/var”)。

作者:天极软件 来源:天极软件 2008年1月21日

关键字: 服务器 启动 MySQL

  • 评论
  • 分享微博
  • 分享邮件

通常,你用3个方法之一启动mysqld服务器:

  • 通过调用mysql.server。这个脚本主要用于系统启动和关闭,更全面的描述在4.15.3 自动启动和停止MySQL
  • 通过调用safe_mysqld,它试图为mysqld决定正确的选项并然后用那些选择运行它。
  • 通过直接调用mysqld

无论你使用哪个方法启动服务器,如果它没有正确启动,检查日志文件看你是否能发现为什么。日志文件位于数据目录(对二进制分发一般是“/usr/local/mysql/data”,对源代码分发是“/usr/local/var”)。用“host_name.err”“host_name.log”形式的名字在数据目录下查找文件,这里host_name是你服务器主机的名字,然后检查这些文件的最后几行:

shell> tail host_name.err
shell> tail host_name.log

mysqld守护进程启动时,它把目录改变到数据目录。这是它期望写日志文件和pid(进程ID)文件的地方,和它期望在那儿找到数据库。

数据目录地点是在分发编译时定死的。然而,如果mysqld期望它在你的系统上其他某个地方找到数据目录,它将工作不正常。如果你有不正确路径的问题,你可使用--help选项调用mysqld,找到mysqld允许什么选项和缺省路径设置是什么。你能通过指定正确的路径作为mysqld命令行参数来覆盖缺省值。(这些选择也能用于safe_mysqld。)

通常你应该只需要告诉mysqld基本目录,在它下面安装MySQL。你可以用--basedir选项做到,你也能使用--help检查改变路径选项的效果(注意,--help必须mysqld命令的最后选项)。例如:

shell> EXECDIR/mysqld --basedir=/usr/local --help

一旦你确定你想要的路径设置,不用--help选项启动服务器。

如果你得到下列错误,它意味着mysqld正在试图使用某些其他程序(或其他mysqld服务器)已经正在使用TCP/IP端口或套接字:

Can't start server: Bind on TCP/IP port: Address already in use
  或
Can't start server : Bind on unix socket...

使用ps保证你没有另外一个mysqld服务器正在运行。如果你不能发现其他运行的服务器,你可以尝试执行命令telnet your-host-name tcp-ip-port-number并且按几次RETURN键,如果你没有得到一个错误消息,像telnet: Unable to connect to remote host: Connection refused,某个东西正在使用mysqld正在试图使用的TCP/IP端口,见4.15.1 运行mysql_install_db的问题19.3 在同一台机器上运行多个MySQL服务器

safe_mysqld脚本被编写以便能正常地启动一个从MySQL源代码或二进制代码版本安装的服务器,就算这些在稍微不同的地点安装服务器。safe_mysqld希望这些条件之一是真的:

  • 服务器和数据库能在相对safe_mysqld被调用的目录下找到。safe_mysqld在它的工作目录下面找“bin”“data”目录(对二进制分发)或“libexec”“var”目录(对源代码分发)。如果你从你的MySQL安装目录(例如,对二进制分发为“/usr/local/mysql”)执行safe_mysqld,这个条件应该满足。
  • 如果服务器和数据库不能在相对其工作目录找到,safe_mysqld试图通过绝对路径找到他们。典型的地点是“ /usr/local/libexec”“/usr/local/var”。实际的地点在构造来自分发的safe_mysqld时确定,如果MySQL安装在一个标准的地点,他们应该是正确的。

因为safe_mysqld将试图在相对它自己的工作目录下找到服务器和数据库,你可以在任何地方安装MySQL的二进制分发,只要你从MySQL安装目录启动safe_mysqld即可:

shell> cd mysql_installation_directory
shell> bin/safe_mysqld &

如果safe_mysqld失败,甚至在从MySQL安装目录调用时,你可以修改它以便使用到mysqld路径并且对你的系统的路径选项是正确的。注意,如果在将来你升级MySQL,你的safe_mysqld修改版本将被覆盖,因此你应该做一个你能重新安装的编辑过的版本的拷贝。

如果mysqld当前正在运行,通过执行这个命令,你能发现它正在使用什么路径设置:

shell> mysqladmin variables

或

shell> mysqladmin -h 'your-host-name' variables

如果safe_mysqld启动服务器但是你不能与它连接,你应该保证你在“/etc/hosts”里面有一个条目,看起来像这样:

127.0.0.1  localhost

这个问题仅发生在没有一个能工作的线程库的系统上并且对该系统MySQL必须配置为使用MIT-pthreads。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章