这问题出现的比较奇葩，自从博客搬到华为云后，偶尔会发现打开博客出现数据库链接失败的提示，初步怀疑被人CC，把数据库搞挂了，然后每次都需要SSH去连接服务器，执行systemctl start mysql.service，烦的不行，索性搞个crontab，十分钟监测一次MySQL服务，如果挂了就让它自动启动。废话不多，直接上脚本：#!/bin/sh port=$(netstat -nlt|grep 3306|wc -l) if [ $port -ne 1 ] then service mysqld start echo 'restart mysql success!' else echo 'mysql is running!' fi宝塔部署方法宝塔请直接到后台，切换到定时任务菜单，添加shell脚本，名字随意，上述脚本粘贴进去即可，自己设置监控频率，推荐十分钟左右。Crontab部署先把以上内容另存到/home/mysql.sh文件。编辑crontab ：crontab -e插入新行：*/10 * * * * /home/mysql.sh保存后，重启crontab服务：systemctl restart crond.service后记：如果需要监控其他程序，请修改此脚本的3306端口即可，例如http服务端口为80，常用端口
场景：很多时候由于找不到之前存储root密码的记录或者其他原因忘记了root密码,这个时候就需要重置MySQL的root密码。具体操作步骤如下：1、修改MySQL的登录设置：vim /etc/my.cnf在[mysqld]的段中加上一句：skip-grant-tables例如：[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock skip-grant-tables保存并且退出vi。2、重新启动mysqld，命令如下/etc/init.d/mysql restart3、登录并修改MySQL的root密码# mysql -uroot -p Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.5.36-log Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> USE mysql ; Database changed mysql> update user set password = password('new-password') where user='root'; Query OK, 4 rows affected (0.01 sec) Rows matched: 4 Changed: 4 Warnings: 0 mysql> flush privileges ; Query OK, 0 rows affected (0.01 sec) mysql> quit Bye4、将MySQL的登录设置修改回来vim /etc/my.cnf将刚才在[mysqld]的段中加上的skip-grant-tables删除保存并且退出vi。5、重新启动mysqld/etc/init.d/mysql restart
MySQL提示:The server quit without updating PID file问题的解决办法
今天网站web页面提交内容到数据库，发现出错了，一直提交不了，数找了下原因，发现数据写不进去！第一反应，重启mysql数据库，一直执行中，停止不了也启动不了，直觉告诉我磁盘满了用df命令查了下，果然磁盘满了，因为当时分区采用系统默认，不知道为什么不能自动扩容！以后在处理这个问题！如图所示：[root@snsgou ~]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/mapper/vg_snsgou-lv_root 51606140 47734848 1249852 100% / tmpfs 1953396 88 1953308 1% /dev/shm /dev/sda1 495844 37062 433182 8% /boot /dev/mapper/vg_snsgou-lv_home 229694676 191796 217835016 1% /home [root@snsgou ~]# 删除了些没用的日志后，重新启动数据库还是出错。[root@snsgou mysql]# service mysql restart MySQL server PID file could not be found![失败] Starting MySQL...The server quit without updating PID file (/usr/local/mysql/data/snsgou.pid).[失败] Google了下 ，问题可能的原因有多种，具体什么原因最好的办法是先查看下错误日志：1、可能是/usr/local/mysql/data/mysql.pid文件没有写的权限解决方法 ：给予权限，执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld！2、可能进程里已经存在mysql进程解决方法：用命令“ps -ef|grep mysqld”查看是否有mysqld进程，如果有使用“kill -9 进程号”杀死，然后重新启动mysqld！3、可能是第二次在机器上安装mysql，有残余数据影响了服务的启动。解决方法：去mysql的数据目录/data看看，如果存在mysql-bin.index，就赶快把它删除掉吧，它就是罪魁祸首了。本人就是使用第三条方法解决的 ！4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件，请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。解决方法：请在[mysqld]下设置这一行：datadir = /usr/local/mysql/data5、skip-federated字段问题解决方法：检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段，如果有就立即注释掉吧。6、错误日志目录不存在解决方法：使用“chown” “chmod”命令赋予mysql所有者及权限7、selinux惹的祸，如果是centos系统，默认会开启selinux解决方法：关闭它，打开/etc/selinux/config，把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试
在使用MySQL数据库时，由于某些原因长时间没有登陆MySQL，或者由于工作交接完成度不高，导致数据库root登陆密码忘记，本文给大家介绍一种当忘记MySQL root密码时的解决办法，亲测有效。首先确认Linux服务器出于安全的状态，也就是没有人能够任意地连接MySQL数据库。因为在重新设置MySQL的root密码的期间，MySQL数据库完全出于没有密码保护的状态下，其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭，并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的Console上面操作，并且拔掉网线。一、更改my.cnf配置文件0、MySQL 版本查看mysql --version1、用命令编辑/etc/my.cnf配置文件，即：vim /etc/my.cnf 或者 vi /etc/my.cnf 或者 nano /etc/my.cnf2.在[mysqld]下添加skip-grant-tables，然后保存并退出3.重启mysql服务：/etc/init.d/mysql restart二、更改root用户名1、重启以后，执行mysql命令进入mysql命令行2、修改root用户密码MySQL> UPDATE mysql.user SET Password=PASSWORD('新密码') where USER='root'; MySQL> flush privileges; MySQL> exit3、最后把/etc/my.cnf中的skip-grant-tables注释掉，然后重启mysql，即：/etc/init.d/mysql restartOK，下面我们就可以使用root新的密码登录MySQL了。mysql -u root -p