问题场景
Apache\Nginx服务启动了,但是MySQL却一直启动失败。
产生原因
我本地已经安装过一个MySQL数据库。
解决
1. 打开服务
2. 切换MySQL服务
搞定。
1、查看启动日志
whereis mysql 找到mysql配置文件位置 /etc/my.cf
得到错误消息
nnoDB: Data file ./ibdata1 is of a different size 768 pages (rounded down to MB) than specified in the .cnf file 1280 pages!
原因是数据文件大小不匹配
2、查看ibdata1的文件大小
whereis mysql 找到mysql的安装位置 /var/run/mysql
[root@localhost mysql]# ll -lh
total 21M
-rw-rw----. 1 mysql mysql 10M Apr 1 09:23 ibdata1
-rw-rw----. 1 mysql mysql 5.0M Apr 1 09:23 ib_logfile0
-rw-rw----. 1 mysql mysql 5.0M Mar 13 07:43 ib_logfile1
drwx------. 2 mysql mysql 4.0K Mar 13 07:43 mysql
drwx------. 2 mysql mysql 4.0K Mar 13 07:43 test
3、设置ibdata1的大小和查看的大小一致 /etc/my.cnf
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
innodb_data_file_path=ibdata1:10M;ibdata2:10M:autoextend
环境:CentOS系统
解决问题不是最重要,重要的是解决问题的思路和过程。有清晰的思路之后再去解决问题就非常容易了,接下来就是实践验证的部分,实践是检验真理的唯一标准
在新的CentOS安装mysql时一直很顺利,但安装好后一运行就出现了报错,如下:
[root@iZuf65saybbvavxkh38cdiZ ~]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.
1、首先看报错信息是mysql启动失败,可以尝试:“systemctl status mysqld.service” and “journalctl -xe”
2、根据提示可以尝试"systemctl status mysqld.service"
这里只看到一个权限错误,没有其他有用信息,那么此时可以查看错误日志(日志是一个很重的文件,很多提示都在日志中存放着);
3.查看错误日志:
[root@iZuf65saybbvavxkh38cdiZ data]# cat /var/log/mysql/mysql-error.log
2021-11-12T11:08:53.061945Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2021-11-12T11:08:53.061985Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/data/ is unusable. You can remove all files that the server added to it.
2021-11-12T11:08:53.062074Z 0 [ERROR] [MY-010119] [Server] Aborting
2021-11-12T11:08:53.062212Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.27) MySQL Community Server - GPL.
可以到标注的这里说文件路径不可用,这里其实就找到了报错的原因了,可以思考下是什么情况导致出现路径不可用的;
,这里根据提示去找到对应文件进行赋予权限即可,这里只给出具体思路;
安装好Python文件后有几个重要的文件夹可以先查看;
①/etc/my.cnf:是存放mysql配置信息的文件
这里记录着mysql端口、文件存放路径、日志存放路径等信息,如果默认没有错误日志,可以在[mysqld]中添加
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
②/var/log/mysql:存放日志文件
这里可以找到mysql运行日志记录
③/var/lib/mysql:存放mysql数据的地方
这里面可以找到mysql相关数据
此处我的电脑为win10,mysql为8.0版本。
一般情况下,通过压缩的安装包,安装MySQL可能会出现MySQL无法启动的情况,如下图:
综合网上的各种资料,加自己的实际操作,总结为以下三种原因:
通过记事本的方式创建my.ini文件, 也可以在电脑中搜索其他的my.ini文件,将其复制后,进行修改(确保为配置文件的格式)。
my.ini文件的创建可以参考这篇博客:https://blog.csdn.net/shinny195/article/details/82319218
创建好my.ini文件之后,将其保存到sever目录下,如下图:
在缺乏data文件时,一定注意不要手动创建data文件!!!手动创建data文件仍然会出现无法启动的情况。
操作方式:
(1)用管理员身份运行命令控制符(cmd)
注意!!!此时如果不用管理员身份运行,可能会出现错误。
(2)在cmd中输入
mysqld --initialize --user=mysql --console
此时会出现
记住此时的临时密码,在之后会用到它。
注意!!!
如果命令行敲为mysqld --initialize-insecure ,没有加–console 在登录mysql时,直接点击enter即可进入,此时的密码为空密码,但是之后会生成一个密码,是我们看不到的,下一次就登录不进去mysql了。(密码错误)
(3)运行mysql
(4)修改密码,输入 ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘新密码’;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
此处可以通过查看data下的.err文件,查看是否有端口占用的情况。
若为端口占用,此时可以通过在命令行输入以下命令查看是哪个进程占用了端口3306。
netstat -ano
找到占用3306端口的PID,如下图:
去任务管理器关闭对应的PID对应的进程。
此时成功解决问题!!!
在运行mysql的过程中,也有可能出现其他的错误,这些都可以通过查看data中的.err文件,得到对应的原因。
Apache\Nginx服务启动了,但是MySQL却一直启动失败。
我本地已经安装过一个MySQL数据库。
搞定。
转载于:https://www.cnblogs.com/mysticbinary/articles/10431116.html