数据库出问题,网站就很尴尬了,前段时间就遇到了两个数据库上的问题,来看一下
朋友找我的时候说的是 Mysql 启动不了,看他发的截图是宝塔面板,就要来了面板信息去看了一下
第一个问题
第一个问题是 phpMyAdmin 报错:
mysqli_real_connect(): (HY000/2002): No such file or directory
解决方法把 phpMyAdmin 目录中的配置文件做以下修改:
/www/server/phpmyadmin/phpmyadmin_XXXXXXXX/libraries
目录下
config.default.php
文件中的$cfg['Servers'][$i]['host'] = 'localhost';
,将localhost
改为127.0.0.1
同理/www/server/phpmyadmin/phpmyadmin_XXXXXXXX
目录下
config.inc.php
文件中$cfg['Servers'][$i]['host'] = 'localhost';
,将localhost
改为127.0.0.1
刷新网页就可以了
第二个问题
Mysql 无法正常启动,也没有报错,我去查看了一下日志,也没看出来个什么名堂,只能一步一步的去检查了
点到了安全,发现没有放行 Mysql 的 3306 端口,我给添加上了
然后启动还是失败,继续检查,要来了 SSH 信息,连接上服务器
使用命令检查了一下是否是磁盘空间不足、内存不足导致的 mysql 服务无法正常启动
命令如下:
df -h #检查是否磁盘空间不足导致mysql服务无法正常启动
free #检查是否内存不足导致mysql服务无法正常启动
一切正常,和面板显示的没有多大出入
然后去查看了一下 data 目录(数据存放目录) Mysql 目录(数据库目录)用户是否为 mysql
ll /www/server/
发现 Mysql 目录确实不是 mysql 的用户,给他改回去
使用命令:
chown -R mysql:mysql /www/server/data #修改data目录
chown -R mysql:mysql /www/server/mysql #修改mysql目录
再检查了一下配置文件
vi /etc/my.cnf
也是正常的,启动依旧失败
无解了,用一下官方提供的脚本检查出错
wget -O sql-repair.sh http://download.bt.cn/install/sql-repair.sh && sh sql-repair.sh
输出一大串错误,mysql 无法正常启动,请将以上错误信息截图发至论坛寻求帮助
仔细看一下报错信息,端口占用,哔了哈士奇
使用命令查看端口 3306
netstat -pan | grep 3306
tcp 0 0 127.0.0.1:53958 127.0.0.1:3306 LISTEN 1653/xxx
发现果然有占用,查看一下它的 pid (pid:进程号),结束掉它,不能直接禁用,我们还要用 3306 呢,这里的响应我忘了保存,反正就是有占用,我加上这个响应是为啥呢,为了告诉你通过 pid 结束这个进程
正常应该是这样子的:
tcp6 0 0 :::3306 :::* LISTEN 6701/mysqld
这个 1653 就是这个进程的 pid,通过命令
kill -9 1653
关掉对应的应用程序,则端口就自然关闭了,也就不存在端口占用了
没有报错的话就尝试启动下 Mysql,发现正常启动了,bingo~
Mysql 挂的原因很大程度是重启服务器所致,没事不要重启服务器,如果修改过配置文件等,重载服务即可无需重启
确实需要重启请使用面板中的安全重启,切勿使用 reboot 命令