报错起因
在CentOS7中安装部署MySQL服务,首次启动服务时失败报错
Job for mysqld.service failed because the control process exited with error code.See “systemctl status mysqld.service” and “journal -xe” for details.
引起此报错的原因不尽相同,所以建议先找到引起报错的具体原因再针对性寻找解决方案
报错信息告知可以使用"systemctl status mysqld.service" 和 "journal -xe"指令查看mysql状态以及查看启动失败反馈的结果信息,但本机在查看此反馈信息时还是没有找到具体的出错原因。于是以本机遇到的问题为例提供了另一种解决方法。
先确认了一下mysql服务的状态,未启动成功
查找出错具体原因
查看mysql报错日志信息
本机是通过查看mysql日志信息找到了具体的出错原因
cat /var/log/mysqld.log | grep ERROR #只查看具体的报错日志,省略了其他类型的日志
"Bind on TCP/IP port: Address already in use
"
发现问题是因为mysql服务默认使用的3306端口被占用,该问题可以通过两种方法解决
解决方案
1. 结束其他进程对3306端口的占用
2. 修改mysql服务配置文件中的指定端口号,设置为另一个可用端口号
本机采用的第一种解决方式,也简单说明一下第二种解决方式
方法一:结束进程对mysql默认端口的占用
查看端口号占用情况
***stat -lnp|grep [端口号] #显示指定端口号使用情况
***stat -ntlp #显示所有端口使用情况
***stat -lnp|grep 3306
端口被进程pid为1974的进程占用,如果端口没有被占用执行查看指令则不会显示任何内容
终结占用进程
kill -9 [进程PID]
kill -9 1974 #本机端口是被PID为1974的进程占用
再次查看端口确认进程已被杀掉
启动成功问题解决
方法二:修改MySQL服务默认端口号
修改配置文件
如果之前手动添加过mysql的配置文件,可以在自己添加的配置文件中修改端口号
通过指令mysql --help|grep 'my.***f'
可以查看到配置文件的适用顺序,越往前优先级越高,/etc/my.***f
是默认存在也是优先级最高的配置文件,本机没有添加其他配置文件,所以直接修改默认配置文件
vi /etc/my.***f #修改配置文件
MySQL配置文件中没有端口号设置会默认使用3306端口,添加端口号设置port=[端口号]
设置的端口号要确认没有再被占用,可用通过前面提到的方法查看端口使用情况
重启MySQL服务
systemctl restart mysqld