MySQL 安装/常见错误
一、Linux 安装
可参考:https://blog.csdn.net/qq_41604383/article/details/103599573
1. 命令
A. 启动mysql:service mysqld start;
B. 停止mysql:service mysqld stop;
C. 重启mysql:service mysqld restart;
2. 知识点
A. mysql是一个命令行程序,mysqld是一个服务,Linux系统里的一般服务都是以d结尾的;
B. 直接运行mysqld程序来启动MySQL服务的方法很少见,而mysqld_safe脚本会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它。
二. 问题集绵
问题一:本地代码和navicat连不上阿里云服务器mysql
原因:A. 服务器的防火墙没有开放3306端口;
B. 阿里云没有开放3306端口。
解决:A. 针对navicat可以通过ssh连接mysql;
B. 针对本地开发必须开放服务器防火墙和阿里云3306端口。
问题二:代码执行SQL数据无法插入
原因:该SQL数据带有分号,而SQL执行命令间默认就是分号(;)分隔符;
解决:将分号默认为命令间分隔符改为自定义分隔符如%%;
可参考:使用MyBatis的ScriptRunner执行SQL文件
问题三:修改mysql.sock(数据库启动后生成的)默认路径导致登录本地数据库异常
原因:使用rpm安装,mysql客户端默认是去读取/var/lib/mysql/mysql.sock;
解决:在/etc/my.cnf文件中client位置添加新的socket位置,然后重启服务即可,或者命令连接添加-h127.0.0.1 -p3306
[client] socket=/data/mysql/mysql.sock
问题四:MySQL因服务器断电后无法重启
原因:InnoDB文件损坏
解决:步骤一:修改my.cnf配置,添加innodb_force_recovery=1,innodb_force_recovery值范围是1至6,然后重启MySQL,变换innodb_force_recovery值直至重启成功;
innodb_force_recovery=1,忽略检查到的corrupt页;
innodb_force_recovery=2,阻止主线程的运行,比如主线程需要执行full purge操作,会导致crash;
innodb_force_recovery=3,不执行事务回滚操作;
innodb_force_recovery=4,不执行插入缓冲的合并操作;
innodb_force_recovery=5,不查看redo log,InnoDB引擎会将未提交的事务视为已提交;
innodb_force_recovery=6,不执行前滚的操作。
innodb_force_recovery不同值设置,会不同程度损坏数据库文件,生产环境需谨慎使用,确保对这个属性了解清楚。
步骤二:数据库数据导出,mysqldump -h127.0.0.1 -P3306 -uroot -p123456 rhxy-prod > rhxy-prod.sql,数据一定要备份成功,否则后续动作无法找回;
步骤三:删除文件,先备份ib_logfile0、ib_logfile1、ibdata1三个文件,然后再删除;
步骤四:修改my.cnf配置,将innodb_force_recovery指改为0,或者注释掉,或者删除掉,然后再重启MySQL;
· 步骤五:导入备份的数据,mysql -h127.0.0.1 -P3306 -uroot -p123456 rhxy-prod < rhxy-prod.sql,导入过程中提示Tablespace exists问题,可以删除ibd文件再试。
三、常见错误
错误一:
A. 现象:版本为5.7.20的MySQL,使用GROUP BY field字段排序报错;
B. 原因:MySQL 5.7.5及以上功能依赖检测功能,如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们;
SQL查询语句:select @@global.sql_mode
C. 解决办法:在/etc/my.cnf中增加sql_mode,去掉ONLY_FULL_GROUP_BY值即可(sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION);
可参考:my.cnf文件参数详解
http://www.linuxe.cn/post-631.html
https://blog.csdn.net/yabingshi_tech/article/details/108981225