扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
通常,你用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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者