【写在前面】其实故事要从my.cnf为空,且lower-case-table-names为0开始,linux环境下mysql8.0及其之后的版本对表名和数据库是严格区分大小写的,从而导致我们运行项目时候会报错Table xxx.QRTZ_LOCKS doesn`t exist。但是我已经装好了mysql8.0咋整?接下来跟着我的节奏,只需要5个步骤就能带你解决这个问题。


文章目录

  • 1、停服务
  • 2、导数据备份
  • 3、删目录
  • 4、初始化
  • 4.1 修改my.cnf
  • 4.2 初始化数据库(重装)
  • 5、启动赋权
  • 5.1 启动服务
  • 5.2进入mysql查看表大小写限制
  • 5.3 修改密码
  • 5.4 本地访问不了服务器数据库
  • 5.4.1 查看权限
  • 5.4.2 修改权限
  • 6、片尾彩蛋


1、停服务

查看服务器状态:

命令行:systemctl status mysqld.service 如果是running表示在跑,如果是dead就是关闭了。

mysql 8严格区分大小写吗 mysql8不区分大小写_服务器


关闭数据库服务

命令行:systemctl stop mysqld.service

mysql 8严格区分大小写吗 mysql8不区分大小写_服务器_02

2、导数据备份

去数据库表将所有的数据进行备份
表备份命令(有待验证):mysqldump -uroot -p -A > all.sql 另外将之前的文件做个全量备份
文件备份命令:cp -av /var/lib/mysql /var/tmp/

3、删目录

删除原数据库存储数据的目录(上面一步备份了就别担心)
命令行:rm -rf /var/lib/mysql

4、初始化

这里切记如果要让你的mysql不敏感校验大小写的问题,必须得执行下面的操作:

4.1 修改my.cnf

如果你的my.cnf是空的,那就先去加这两行
修改配置文件/etc/my.cnf,在[mysqld]下添加

[mysqld]
lower-case-table-names=1

修改命令:vim /etc/my.cnf 然后按i键盘,改好再按Esc,再输入‘:wq’即可。

4.2 初始化数据库(重装)

【核心设置】命令行

mysqld --initialize --user=mysql --lower-case-table-names=1 初始化的时候切记有个初始密码哟,一定要记下来,如下图:

mysql 8严格区分大小写吗 mysql8不区分大小写_数据库_03

5、启动赋权

5.1 启动服务

当我们完成后就可以启动mysql服务了
启动命令:systemctl start mysqld.service

5.2进入mysql查看表大小写限制

进入命令:mysql -u root -p 展示命令:show variables like 'lower_case_table_names';

mysql 8严格区分大小写吗 mysql8不区分大小写_mysql 8严格区分大小写吗_04

5.3 修改密码

之前的密码相信很多人估计都记不住,我们要是自己修改的话执行如下:
修改密码操作:
命令行:alter user 'root'@'localhost' identified by 'XXXXXXXXX'; 命令行(必须):flush privileges;

5.4 本地访问不了服务器数据库

【mysql 常见错误1130】报错:

1130 Host ... is not allowed to connect to this MySQL server

mysql 8严格区分大小写吗 mysql8不区分大小写_数据库_05

这样的话主要你本地没有被赋权限访问:

5.4.1 查看权限

查询命令:select host,user from user where user='root'; 发现root用户只能localhost访问。

mysql 8严格区分大小写吗 mysql8不区分大小写_mysql 8严格区分大小写吗_06

5.4.2 修改权限

命令行:update user set host='%' where user='root'; 命令行(必须):flush privileges;

上面两个命令行记得一起依次执行哟,最后一个就是让调整生效的命令。

mysql 8严格区分大小写吗 mysql8不区分大小写_数据库_07


最后本地测试就可以连接成功啦!

mysql 8严格区分大小写吗 mysql8不区分大小写_数据库_08