简单来说说mysqld_safe和mysqld工具区别:mysqld_safe是服务端工具,用于启动mysqld,并且是mysqld的守护进程,所以mysqld_safe脚本会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它。所有在生产环境我们更建议用mysqld_safe的方式去启动mysql服务。
既然源码编译安装过程均没有任何报错,那没有生成mysqld_safe的原因大概就出在编译参数上面了。
原本的编译代码为:
cmake\
-DCMAKE_INSTALL_PREFIX=/soft/mysql/svr/mysql57\
-DMYSQL_DATADIR=/soft/mysql/dbdat/mysql57_\
-DSYSCONFDIR=/soft/mysql/conf/mysql\
-DWITH_BOOST=/soft/mysqlsetup/mysql-5.7.34/boost/boost_1_59_0\
-DDEFAULT_CHARSET=utf8mb4\
-DDEFAULT_COLLATION=utf8mb4_unicode_ci\
-DEXTRA_CHARSETS=all\
-DENABLED_LOCAL_INFILE=1\
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock\
-DMYSQL_TCP_PORT=\
-DWITH_SYSTEMD=1
通过百度才知道,DWITH_SYSTEMD参数决定是否安装mysqld_safe,果断去掉该参数,最终编译代码为:
cmake\-DCMAKE_INSTALL_PREFIX=/soft/mysql/svr/mysql57\-DMYSQL_DATADIR=/soft/mysql/dbdat/mysql57_\-DSYSCONFDIR=/soft/mysql/conf/mysql\-DWITH_BOOST=/soft/mysqlsetup/mysql-5.7.34/boost/boost_1_59_0\-DDEFAULT_CHARSET=utf8mb4\-DDEFAULT_COLLATION=utf8mb4_unicode_ci\-DEXTRA_CHARSETS=all\-DENABLED_LOCAL_INFILE=1\-DMYSQL_UNIX_ADDR=/tmp/mysql.sock\-DMYSQL_TCP_PORT=重新安装后,果然问题解决。