华为云ARM架构下Centos7.4 mysql 版本升级至5.7.30
最初安装mysql 5.7.27,安全扫描漏洞太多,只能升级相对稳定的高版本。
数据库版本升级,首先考虑是否需要备份mysql,无则忽略以下备份步骤。
1.进入mysql数据库保存目录:
cd /usr/local/data
备份数据库,数据库多则考虑使用shell脚本批量备份
mysqldump -uroot -p 数据库名>/usr/local/backup/数据库名.sql
- 停止服务并彻底卸载之前手动安装mysql
systemctl stop mysqld
//查找所有msyql文件并手动删除
find / -name mysql
3.安装
- 下载安装包
Wget https://obs-mirror-ftp4.obs.cn-north-myhuaweicloud.com/database/mysql-5.7.30.tar.gz
- 安装依赖包
yum install -y perl openssl openssl-devel libaio perl-JSON autoconf
- 解压并安装
tar -xvf mysql-5.7.30.tar.gz
cd aarch64
yum remove -y mariadb-libs
yum install *.rpm
- 启动MySQL,查看状态
systemctl start mysqld
systemctl status mysqld
- 登录数据库 密码生成在/var/log/mysqld.log中,通过/password查找
grep ‘password’ /var/log/mysqld.log
mysql -uroot -p
- 修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
- 开放远程连接:
mysql> use mysql; mysql> update user set host = '%' where user = 'root';
- 生效:
mysql> FLUSH PRIVILEGES;
4.恢复备份数据
mysql -uroot -p
- 进入msyql数据保存目录
cd /var/lib/mysql
- 执行sql脚本
source /usr/local/backup/adapterdb.sql
5.相关设置
5.1支持大小写设置
a)查看mysql大小写设置
show variables like 'lower%';
b)在my.cnf中的[mysqld]后面添加lower_case_table_names=1
5.2 关闭ONLY_FULL_GROUP_BY模式
分组查询报错:
mySql中Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre
原因:在MySQL5.7版本之后对group by进行了优化,默认启动了ONLY_FULL_GROUP_BY模式。
vi /etc/my.cnf
解决:在[mysqld]后面追加下面这句配置后重启服务解决问题;
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
如下图: