mysql5.7升级mysql8.0需要注意事项

本文介绍了如何在MySQL 8.0中设置大小写敏感性,以及如何处理only_full_group_by限制。重点讲解了初始化设置、my.cnf文件调整、docker环境配置,并提供了解决SQL模式问题的方法。

1. 安装mysql8.0时,默认是大小写敏感,需要通过设置lower_case_table_names=1,但是需要注意,需要在初始化的时候和my.cnf文件中均设置才生效。如果已经安装完数据库,在设置不生效。docker安装mysql需要在创建容器时通过配置参数设置。docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql --lower_case_table_names=1 其他参数一样。

2. mysql8默认启用only_full_group_by,导致有些在mysql早期版本的写法不兼容。提示:Expression #1 of ORDER BY clause is not in SELECT list, references column 'xxxx' which is not in SELECT list; this is incompatible with DISTINCT 。需要取消这个配置。直接修改my.cnf文件。增加sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

重启mysql服务即可。docker下,用docker cp 容器ID:/etc/mysql/my.cnf /home将文件复制出来,修改完成后再docker cp /home/my.cnf 容器ID:/etc/mysql/将文件复制回去 然后重启docker生效。直接修改set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';只能临时生效,重启失效。

在CentOS系统上将MySQL 5.7升级MySQL 8.0可按以下步骤进行: ### 1. 备份数据 在进行升级操作之前,务必对现有的MySQL数据库进行完整备份,以防止数据丢失。可以使用`mysqldump`命令来备份所有数据库: ```bash mysqldump -u root -p --all-databases > all_databases_backup.sql ``` ### 2. 停止MySQL 5.7服务 使用以下命令停止正在运行的MySQL 5.7服务: ```bash systemctl stop mysqld ``` ### 3. 移除MySQL 5.7的Yum仓库 若通过Yum安装的MySQL 5.7,需要移除相关的Yum仓库文件: ```bash rm -rf /etc/yum.repos.d/mysql-community.repo ``` ### 4. 安装MySQL 8.0的Yum仓库 下载并安装MySQL 8.0的Yum仓库文件: ```bash wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm rpm -ivh mysql80-community-release-el7-3.noarch.rpm ``` ### 5. 安装MySQL 8.0 使用Yum安装MySQL 8.0: ```bash yum install mysql-community-server ``` ### 6. 启动MySQL 8.0服务 安装完成后,启动MySQL 8.0服务并设置开机自启: ```bash systemctl start mysqld systemctl enable mysqld ``` ### 7. 初始化MySQL 8.0 MySQL 8.0安装后需要进行初始化操作,可通过以下命令完成: ```bash mysql_secure_installation ``` 按照提示设置root用户密码、移除匿名用户、禁止root远程登录等。 ### 8. 升级系统表 使用以下命令升级系统表: ```bash mysql_upgrade -u root -p ``` 输入root用户密码后,系统会自动升级系统表。 ### 9. 验证升级结果 登录MySQL 8.0,查看版本信息: ```bash mysql -u root -p ``` 在MySQL命令行中执行以下命令: ```sql SELECT VERSION(); ``` 若显示为MySQL 8.0的版本号,则表示升级成功。 ### 10. 恢复数据 若之前进行了数据备份,可使用以下命令恢复数据: ```bash mysql -u root -p < all_databases_backup.sql ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值