乐趣区

关于mysql:mysql大小写问题解决

背景

mysql 在 Linux 零碎中默认是辨别大小写的,也就是 userUSER是两张不同的表,而且前期这个参数是无奈批改的,批改的话须要清空数据,老本十分高,而且最新版也没有针对这个问题的改良,这个设计我想不出是出于什么目标,因为理论状况是一个数据库可能很多零碎共用,有些须要辨别大小写,有些不须要,如果后期没有发现这问题,前期就要从新搭建一个数据库做数据迁徙,除了要搞死 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 -p  db_name < db_name.sql
退出移动版