MySQL 8 忽略表名大小写
文章目录
MySQL 8 忽略表名大小写一、修改步骤:1、备份数据2、停止MySQL服务3、删除数据目录4、修改 `my.cnf` 配置文件5、重新初始化 MySQL6、mysql无密码登陆7、修改user表数据8、再次修改配置文件9、重启服务10、重新登陆11、重新给root设置密码
二、docker 环境下修改
MySQL8.0 新增了data dictionary的概念,数据初始化的时候在linux下默认使用lower-case-table-names=0的参数,数据库启动的时候读取的my.cnf文件中的值。若二者值不一致则在mysql的错误日志中记录报错信息。而在MySQL 5.7之前则允许数据库初始化和启动的值不一致且以启动值为准。
而,修改数据库默认策略,要在 mysql8.0安装完成之后,第一次启动初始化之前,否则会启动报错,无法启动。若已经初始化过数据库,修改步骤如下:
一、修改步骤:
如果是初次安装,安装完rpm包后,先执行:
mysqld --initialize --user
=mysql --lower-case-table-names
=1
执行完初始化语句,再启动服务。否则,按以下步骤修改。
1、备份数据
修改过程需要重新初始化数据库,因此会造成数据丢失,需提前备份数据;
2、停止MySQL服务
systemctl stop mysqld
;
3、删除数据目录
find / -type d -name mysql
eg: /var/lib/mysql
4、修改 my.cnf 配置文件
vim /etc/my.cnf
[mysqld
]
......
skip-grant-tables
......
5、重新初始化 MySQL
mysqld --initialize --user
=mysql --lower-case-table-names
=1
systemctl start mysqld
;
6、mysql无密码登陆
mysql
;
7、修改user表数据
use mysql
;
select user,host
,plugin
,authentication_string
from user;
+
| user | host
| plugin
| authentication_string
|
+
| nacos
| % | mysql_native_password
| *016DE411332FB
|
| root
| localhost
| mysql_native_password
| *7ED2CA2AD9
|
| healthchecker
| localhost
| mysql_native_password
| *30A4BDF7
|
| mysql
.infoschema
| localhost
| caching_sha2_password
| $A$
0RBRBEUSED
|
| mysql
.session | localhost
| caching_sha2_password
| $NEVERBRBEUSED
|
| mysql
.sys
| localhost
| caching_sha2_password
| $TNEVERBRBEUSED
|
| root
| localhost
| mysql_native_password
| *A2AD9
|
+
update user set host
= '%',authentication_string
= '' where user = 'root';
exit;
8、再次修改配置文件
[mysqld
]
......
9、重启服务
systemctl restart mysqld
;
10、重新登陆
mysql -uroot -p
;
Enter password:
11、重新给root设置密码
alter user 'root'@'
%' IDENTIFIED WITH mysql_native_password BY 'Bowden_12345'
;
至此,完成mysql 8 表名大小写配置。
二、docker 环境下修改
如果mysql是docker方式部署的话,可以先备份数据,然后重新运行一个容器,在启动命令后面追加参数即可,例如:
docker run --name mysql --restart
=always \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /home/mysql/data:/var/lib/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD
="root" \
-e TZ
=Asia/Shanghai \
-d mysql:8.0 \
--lower-case-table-names
=1