linux mysql8大小写敏感问题
问题描述
在windows或者macOs,mysql对表明的大小写是不敏感的,但是在linux上是敏感的。笔者写了一个程序,程序里的sql语句没有注意大小写问题,访问windows的mysql没有问题,但访问Linux的就出问题了。于是着手解决这个问题,让linux的mysql也变得大小写不敏感。
让linux 的mysql 变成大小写不敏感
设置这个是在mysql初始化的时候进行的。也就是mysql安装完成之后,使用数据库前进行的。一旦mysql完成初始化,就不能设置大小写敏感属性了。如果mysql已经投入使用。修改大小写属性的方法就是备份数据库->然后清空mysql的安装目录->修改大小写敏感属性->重新初始化mysql->重新设置用户名和密码->导入备份的数据库。
备份
mysqldump --routines -uroot -p databaseName --result-file=databaseName.sql
只能一个数据库一个数据库地备份。 --result-file能解决windows下的字符集问题。如果不用–result-file 而用 > 重定向符号,在windows上会出现字符集问题,因为windows > 写入文件不是用utf-8字符集。而mysql默认是utf-8字符集。
重设
sudo systemctl stop mysql
sudo rm -rf /var/lib/mysql
sudo mkdir /var/lib/mysql
sudo chown -R mysql:mysql /var/lib/mysql
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
sudo /usr/sbin/mysqld --initialize --user=root --lower-case-table-names=1
systemctl start mysql
查看数据库初始密码
sudo cat /var/log/mysql/error.log | grep temporary
登录数据库
mysql -uroot -p
下面不是必须,视自己需要
修改数据库密码
alter user 'root'@'localhost' identified by '12345';
修改主机
update mysql.user set host = '%' where user = 'root';
修改监听ip
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
systemctl restart mysql
恢复备份的数据库
事先创建好相应的数据库。
mysql -uroot -p databaseName < databaseName.sql