mysql8.0 lower_case_table_names 大小写敏感设置问题解决
作者:吹牛不交税
lower_case_table_names=1 表示 mysql 是不区分大小写的
lower_case_table_names=0 表示 mysql 是区分大小写的
根据网上资料得知mysql8.0之后,lower_case_table_names 配置必须在安装好 MySQL 后,初始化 mysql 配置时才有效。一旦 mysql 启动后,再设置是无效的,而且启动报错。
需要重新初始化MySQL数据库,并且在初始化过程中,在初始化之前将lower_case_table_names = 1写入到my.cnf文件中
但是我都已经安装启动了,那就继续坑呗
1 在修改配置之前,请先把 mysql 服务停止
systemctl stop mysqld.service
2 删除错误日志
为了方便查看 mysql 的错误日志,可以先将 /var/log/mysqld.log 删除。我第二次尝试时不删除日志也没问题。
rm /var/log/mysqld.log
[root@iZbp19o1a0ypknm0yq2tifZ /]# systemctl stop mysqld.service [root@iZbp19o1a0ypknm0yq2tifZ /]# rm /var/log/mysqld.log rm:是否删除普通文件 "/var/log/mysqld.log"?y
3 递归删除 /var/lib/mysql 目录下面的内容
cd /var/lib/mysql #进入目录
rm -rf * #递归删除
[root@iZbp19o1a0ypknm0yq2tifZ /]# cd /var/lib/mysql [root@iZbp19o1a0ypknm0yq2tifZ mysql]# ls auto.cnf binlog.index ca.pem client-key.pem #ib_16384_1.dblwr ibdata1 #innodb_temp mysql.ibd private_key.pem server-cert.pem sys undo_002 binlog.000001 ca-key.pem client-cert.pem #ib_16384_0.dblwr ib_buffer_pool #innodb_redo mysql performance_schema public_key.pem server-key.pem undo_001 [root@iZbp19o1a0ypknm0yq2tifZ mysql]# rm -rf * [root@iZbp19o1a0ypknm0yq2tifZ mysql]# ls [root@iZbp19o1a0ypknm0yq2tifZ mysql]#
4 删除原目录,创建数据库目录并授权
rm -rf /var/lib/mysql
上面将已存在的数据库目录 /var/lib/mysql 删除,下面将手动创建一个空目录且进行授权
进入/var/lib 目录,创建目录:
cd /var/lib mkdir mysql
赋权:
chown -R mysql:mysql mysql
查看赋权是否成功:ll|grep mysql
[root@iZbp19o1a0ypknm0yq2tifZ lib]# ll|grep mysql drwxr-x--x 2 mysql mysql 4096 2月 28 15:32 mysql drwxr-x--- 2 mysql mysql 4096 9月 14 02:29 mysql-files drwxr-x--- 2 mysql mysql 4096 9月 14 02:29 mysql-keyring
5 配置 lower_case_table_names
下面的命令
vim /etc/my.cnf
配置文件中加上 lower_case_table_names=1 即可。 #是否对sql语句大小写敏感,1表示不敏感
我是直接用sftp下载my.cnf修改,然后再上传覆盖的
另外,我有自定义目录,所以我的my.cnf文件里 凡是 /mnt/mysql8data 的都替换为 /var/lib
6 初始化MySql
默认安装目录应该是下面的命令
mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/var/lib/mysql --datadir=/var/lib/mysql
启动服务:
systemctl start mysqld.service systemctl status mysqld.service
7 登录 MySql并修改密码
查初始密码并复制出来,fzue;+r=9hjP 就是我的密码
cat /var/log/mysqld.log |grep temp
[root@iZbp19o1a0ypknm0yq2tifZ lib]# cat /var/log/mysqld.log |grep temp 2023-02-28T08:45:48.759373Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: fzue;+r=9hjP [root@iZbp19o1a0ypknm0yq2tifZ lib]#
用初始密码登录:mysql -uroot -p
修改密码:alter user 'root'@'localhost' identified by '密码';
用Navicat测试还不能登录,还需要刷新host
use mysql; update user set host = '%' where user ='root'; flush privileges;
8 参考以前写的文章重新修改mysql数据目录
转到链接文章中第7点开始修改。
https://www.jb51.net/database/297966enh.htm
到此这篇关于mysql8.0 lower_case_table_names 大小写敏感设置问题解决的文章就介绍到这了,更多相关mysql 大小写敏感 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!