这篇文章是原来的《记一次mysql故障处理》,但是随着mysql问题越来越多,我感觉还是集合到一篇里面比较好,也方便之后问题复现的查找

一、记一次mysql故障处理

最近遇到的问题还是有点多的,所以遇到问题就记录一下以免以后忘记了怎么解决

mysql版本5.7,centos环境,无法正常启动服务,提示

2021-06-10T08:18:06.378567Z 0 [ERROR] InnoDB: Trying to access page number 4294967295 in space 0, space name innodb_system, which is outside the tablespace bounds. Byte offset 0, len 16384, i/o type read. I f you get this error at mysqld startup, please check that your my.cnf matches the ibdata files that you have in the MySQL server. 

找了一圈不清楚哪出的问题,因为数据库只是开发环境所以直接重置数据文件

rm -rf /var/lib/mysql/*

如果是生产环境则不能这么简单粗暴,先配置

/etc/my.cnf加入innodb_force_recovery=X行
X为0-6数字
0正常运行mysql
1(SRV_FORCE_IGNORE_CORRUPT):忽略检查到的corrupt页。
2(SRV_FORCE_NO_BACKGROUND):阻止主线程的运行,如主线程需要执行full purge操作,会导致crash。
3(SRV_FORCE_NO_TRX_UNDO):不执行事务回滚操作。
4(SRV_FORCE_NO_IBUF_MERGE):不执行插入缓冲的合并操作。
5(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交。 6(SRV_FORCE_NO_LOG_REDO):不执行前滚的操作。 

数字越大跳过的mysql项就越多,跳过内容向下兼容,本次的mysql直到5才可以正常启动,启动后就可以正常运行服务

当设置innodb_force_recovery参数值大于0后,可以对表进行select,create,drop操作,但insert,update或者delete这类操作 

然后进行备份

mysqldump -uroot -p --all-databases> back.sql

再执行上面的重置数据文件

rm -rf /var/lib/mysql/*

之后进入my.cnf取消删除innodb_force_recovery行,重启mysql服务

以下操作么有经过检验:

重新执行MySQL的安全脚本mysql_secure_installation,设置root登录密码,然后登录MySQL进行数据库的恢复。

source back.sql(备份文件的绝对路径);

mysql忘记密码(version 5.7)

在 /etc/my.cnf 【mysql】模块下最后加入skip-grant-tables=1就可以直接使用mysql -uroot 登录,之后进行密码修改操作
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘youpassword’ WITH GRANT OPTION;
FLUSH PRIVILEGES;

mysql创建用户、密码

set global validate_password_policy=0;
set global validate_password_length=1; ALTER USER 'root'@'%' IDENTIFIED BY 'comleader@123'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'comleader@123' WITH GRANT OPTION; FLUSH PRIVILEGES; use mysql CREATE USER 'cmpadmin'@'%' IDENTIFIED BY 'comleader@123'; GRANT ALL PRIVILEGES ON *.* TO 'cmpadmin'@'%' IDENTIFIED BY 'comleader@123' WITH GRANT OPTION; FLUSH PRIVILEGES; 

二、mysql更改默认字符集

https://www.cnblogs.com/xingyunblog/p/3836299.html

三、Mysq加固

1、删除匿名用户

查看
select distinct user from mysql.user;
是否有user为空,没有则没问题 

2、配置日志

  1. 错误日志
  2. 查询日志
  3. 慢查询日志
  4. 二进制日志
  5. 更新日志

以上所有配置

在/etc/my.cnf中加入以下几行(已经有的行替换掉)
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
general-log slow-query-log log-bin server-id=1 其中‘更新日志’没有查到此项配置 

3、禁止管理员账号权限运行mysql

use mysql
select host,user from user;
查看用户root 是否有host为%的,如果有: Delete FROM user Where User='root' and Host='%'; flush privileges; 

四、mysql 重新初始化

这里的命令是已经过期的不过还能用,新的命令还不知道格式
问题:经过一阵断电后,虚拟机mysql出现问题,无法正常打开,按照一种的步骤也无法恢复,此时采用重新手动初始化数据库方法~
/usr/bin/mysql_install_db --user=mysql --basedir=/var/lib/mysql --datadir=/var/lib/mysql/data

msyql无密码登录

my.cnf中加入
skip-grant-tables

mysql启动异常 ERROR! MySQL manager or server PID file could not be found!

创建/usr/local/var/mysql/mysql.pid
chmod -R 777 /usr/local/var/mysql my.cnf中加入pid-file = /usr/local/var/mysql/mysql.pid

转自

mysql问题记录 – seas – 博客园
https://www.cnblogs.com/seasen/p/14893419.html

原文地址:http://www.cnblogs.com/paul8339/p/16880095.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性