mysql大小写问题解决
背景
mysql在Linux系统中默认是区分大小写的,也就是user
和USER
是两张不同的表,而且后期这个参数是无法修改的,修改的话需要清空数据,成本非常高,而且最新版也没有针对这个问题的改进,这个设计我想不出是出于什么目的,因为实际情况是一个数据库可能很多系统共用,有些需要区分大小写,有些不需要,如果前期没有发现这问题,后期就要重新搭建一个数据库做数据迁移,除了要搞死mysql外,我想不出有什么其他理由oracle要这么设计。
解决方案
- 备份数据库
mysqldump -uroot -p 数据库名称 >db_name.sql
建议一个个数据库进行备份
- 修改配置文件
/etc/mysql/my.cnf
,增加以下配置lower_case_table_names=1
- 修改数据文件目录
datadir= /data/mysql
/data/mysql必须为空
- 关闭数据库执行以下命令进行初始化
mysqld--lower_case_table_names=1 --initialize-insecure --basedir=/usr/ --datadir=/data/mysql
- 重启数据库后所有数据都会丢失,我们需要重新创建数据库和数据库用户
# 仅供参考
create database db_name;
update user set host='%' where user='root';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password;
alter user 'root'@'%' identified by 'mysql';
GRANT ALL PRIVILEGES ON db_name.* TO 'root'@'%';
- 重新导入数据
mysql -uroot -pdb_name < db_name.sql
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- jhipster|jhipster 升级无效问题
- “精神病患者”的角度问题
- 解决SpringBoot引用别的模块无法注入的问题
- Hive常见问题汇总
- 姚老师互动问答会|姚老师互动问答会 # 问题001(如何更有智慧的和身边人分享金刚智慧())
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- 【教育故事】|【教育故事】 一个“问题学生”的蜕变
- 蓝桥杯试题
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片