解决MySQL 8.x初始化后设置忽略表和字段大小写敏感的问题

问题背景:

        当在Linux (如:centos)安装并初始化好了MySQL 8.x版本后,发现该数据库存在表和字段启动了大小写敏感的设置,导致之前已写好的应用系统报了大量的表或字段不存在问题。

解决方案:

        在低版本下,我们只需要在linux的my.cnf配置文件的 [mysqld] 段下添加lower_case_table_names=1后重启mysql即可。

        但是,在MySQL 8.x时,采用低版本的方案添加了该配置后,MySQL根本就无法启动了。原因是MySQL 8.x后要求在安装数据库过程中,初始化数据过时就需要指定是否要忽略表和字段大小写敏感,否则,在初始化之后就无法通过低版本的方案来解决了,设置了也会无法正常启动。你可以这样理解,由于初始化数据库时没有启用忽略表和字段大小写敏感参数,在初始化数据库时已按大小写敏感的规则创建了mysql等数据库和表以及数据,所以,你再要求启用忽略表和字段大小写敏感当然是不可以的。为了解决这个问题,我们可以采用以下步骤解决:

1.停止MySQL 8.x:

/mysql/mysql/bin/mysqladmin -u root -p shutdown

输入密码后完成停止。

2.备份MySQL数据库文件目录,如果没啥用就直接删除吧,我这里采用的是数据库目录改名的方式:

mv /mysql/data /mysql/data1

3.重新初始化mysql数据库:

使用 mysql 用户登录 linux 后,重新执行以下命令进行初始化。特别注意,这次一定要指定启动大小写敏感 --lower-case-table-names=1 参数了。

0:表名存储为给定的大小写,比较也是区分大小写的(在大多数Unix/Linux系统上默认);
1:表名存储为小写,比较时不区分大小写(在Windows系统上默认);
2:表名存储为给定的大小写,但比较时不区分大小写(在Mac OS X上默认);

/mysql/mysql/bin/mysqld --initialize --lower-case-table-names=1 --user=mysql --basedir=/mysql/mysql --datadir=/mysql/data

完成以上命令后,可以在/mysql/mysql/mysql.log中看到随机生成的root用户密码,如下所示的 ./e0=d:5u1aR 就是root用户的密码了:

[mysql@centos144 mysql]$ tail mysql.log
2025-03-13T12:39:56.072822Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /tmp/mysqlx.sock
2025-03-13T12:44:20.496597Z 11 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
2025-03-14T00:55:41.645892Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2025-03-14T00:55:41.646612Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead.
2025-03-14T00:55:41.646648Z 0 [System] [MY-013169] [Server] /mysql/mysql/bin/mysqld (mysqld 8.0.41) initializing of server in progress as process 44544
2025-03-14T00:55:41.655125Z 0 [Warning] [MY-013907] [InnoDB] Deprecated configuration parameters innodb_log_file_size and/or innodb_log_files_in_group have been used to compute innodb_redo_log_capacity=1073741824. Please use innodb_redo_log_capacity instead.
2025-03-14T00:55:41.657180Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2025-03-14T00:55:42.566133Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2025-03-14T00:55:45.466762Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ./e0=d:5u1aR
2025-03-14T00:55:45.868971Z 6 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
[mysql@centos144 mysql]$

4.修改/etc/my.cnf文件,在 [mysqld] 段下,添加 lower_case_table_names=1 配置项。

[mysqld]
basedir=/mysql/mysql
datadir=/mysql/data
socket=/mysql/mysql/mysql.sock
pid-file=/mysql/mysql/mysql.pid
log-error=/mysql/mysql/mysql.log# 设置默认字符集为 utf8mb4
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci# 认证和安全
default_authentication_plugin=mysql_native_password
skip-name-resolve# 连接参数
port=3306
bind-address=0.0.0.0# 资源管理
max_connections=500
innodb_buffer_pool_size=1G
innodb_log_file_size=512M
innodb_flush_log_at_trx_commit=1# 其他优化参数
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
symbolic-links=0lower_case_table_names=1# 设置客户端字符集
[client]
default-character-set = utf8mb4[mysqld_safe]
log-error=/mysql/mysql/mysql.log
pid-file=/mysql/mysql/mysql.pid

5.使用linux的mysql用户启动MySQL(用于修改root密码和创建自己需要的新登录用户)

nohup /mysql/mysql/bin/mysqld > /dev/null 2>&1 &

5.使用root用户登录mysql数据库,并修改root密码,创建自己需要的新登录用户:

/mysql/mysql/bin/mysql -u root -p

输入数据库的root用户的密码 ./e0=d:5u1aR 登录到数据库,在数据库命令行中修改root的密码。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

6.添加root用户可以远程登录mysql数据库,并分配权限

mysql> create user 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.02 sec)mysql> grant all privileges on *.* to 'root'@'%' with grant option;
Query OK, 0 rows affected (0.01 sec)

至此,问题已解决。可以用mysql客户端远程登录到数据库测试验证问题是否已解决。

启动MySQL:

/mysql/mysql/bin/mysqld_safe --user=mysql &

停止MySQL:

/mysql/mysql/bin/mysqladmin -u root -p shutdown

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34356.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】多源物料融合算法(一):量纲对齐常见方法

目录 一、引言 二、量纲对齐常见方法 2.1 Z-score标准化Sigmoid归一化 2.2 Min-Max 归一化 2.3 Rank Transformation 2.4 Log Transformation 2.5 Robust Scaling 3、总结 一、引言 类似抖音、快手、小红书等产品的信息流推荐业务,主要通过信息流广告、信…

前端高级CSS用法

前端高级CSS用法 在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一。随着前端技术的不断发展,CSS的用法也日益丰富和高级。本文将深入探讨前端高级CSS的用法&a…

How to install a package in offline scenario in Ubuntu 24.04

概述 做过信创项目的兄弟们在工作上每天可能面对很多需要解决的问题,不过,有一类问题可能是大家经常遇的,比方说,有时候我们不得不硬着头皮在离线生产环境中安装某些软件包,相信很多兄弟被这种细碎的小事搞得焦头烂额…

C++类与对象——拷贝构造与运算符重载

拷贝构造函数和赋值运算符重载就是C类默认六个函数之二。 拷贝构造函数: 如果⼀个构造函数的第⼀个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数 也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数…

数学建模 第一节

目录​​​​​​ 前言 一 优化模型的类型 二 线性规划1 线性规划2 三 0-1规划 总结 前言 数学建模主要是将问题转化为模型,然后再以编程的形式输出出来 算法都知道,数学建模也需要用到算法,但是不是主要以编程形式展示,而是…

计算机网络——DNS

一、什么是DNS? DNS(Domain Name System,域名系统) 是互联网的核心服务,负责将人类可读的域名(如 www.baidu.com)转换为机器可识别的 IP地址(如 14.119.104.254)。它像一…

【软考-架构】5.2、传输介质-通信方式-IP地址-子网划分

✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 传输介质网线光纤无线信道 通信方式和交换方式会考:交换方式 💯考试真题第一题第二题 IP地址表示子网划分💯考试真题第一题第二题 传输…

基于SpringBoot+Vue的毕业论文管理系统+LW示例参考

1.项目介绍 系统角色:管理员、指导教师、评阅教师、学生功能模块:用户管理、毕业论文管理、课题信息管理、选题申请管理、课题任务管理、基础数据管理、公告信息管理、评阅教师管理、指导教师管理等技术选型:SpringBoot,Vue等测试…

文件系统 linux ─── 第19课

前面博客讲解的是内存级文件管理,接下来介绍磁盘级文件管理 文件系统分为两部分 内存级文件系统 : OS加载进程 ,进程打开文件, OS为文件创建struct file 和文件描述符表 ,将进程与打开的文件相连, struct file 内还函数有指针表, 屏蔽了底层操作的差异,struct file中还有内核级…

第十次CCF-CSP认证(含C++源码)

第十次CCF-CSP认证 分蛋糕满分题解 学生排队满分题解 Markdown语法题目解读满分代码 结语 分蛋糕 题目链接 满分题解 基本思路:我们需要保证除了最后一个小朋友之外的所有人,分得的蛋糕都大于等于给定的K值,为什么是大于等于,是…

MyBatis框架操作数据库一>xml和动态Sql

目录 配置连接字符串和MyBatis:数据库的连接配置:XML的配置: XML编写Sql:model层:mapper层: 动态Sql:if 标签和trim标签:where标签:Set标签:Foreach标签: Mybatis的开发有两种方式:: 注解和XML&…

编写Dockerfile制作tomcat镜像,生成镜像名为tomcat:v1,并推送到私有仓库。

1.具体要求如下: 基于rockylinux:8基础镜像; 指定作者为openlab; 安装tomcat服务,暴露8080端口; 设置服务自启动。 总结步骤:基于rockylinux:8,安装Java环境,安装Tomcat&a…

医院手术麻醉信息系统是如何为医院提质增效的?

近年来,随着HIS系统、LIS系统、PACS系统、EMR系统等信息系统的出现,医疗信息化已成为医疗领域推广的重点,显著提高了医院业务的运营效率。手术麻醉系统作为医院信息系统的一部分,由两个子部分组成:监测设备数据采集系统…

ios打包需要的证书及步骤

官网:https://developer.apple.com/account 避免他人登录apple账号的方法:就是让他们发测试设备的udid,手动注册到账号下,然后再给他们导p12证书和描述文件 iOS App Development iOS 开发版本签名(仅限 iOS App&#x…

C#特性和反射

1。特性概念理解? 特性(Attribute)是用于在【运行时】传递程序中各种元素(比如类、属性、方法、结构、枚举、组件等)行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所…

【毕业论文格式】word分页符后的标题段前间距消失

文章目录 【问题描述】 分页符之后的段落开头,明明设置了标题有段前段后间距,但是没有显示间距: 【解决办法】 选中标题,选择边框 3. 选择段前间距,1~31磅的一个数 结果

操作系统-八股

进程基础: 进程定义:运行中的程序,有独立的内存空间和地址,是系统进行资源调度和分配的基本单位。 并发,并行 并发就是单核上面轮询,并行就是同时执行(多核); 进程上下…

骑士74CMS_v3.34.0SE版uniapp全开源小程序怎么编译admin和member流程一篇文章说清楚

有粉丝一直问我骑士系统怎么编译后台和小程序目前骑士人才系统74CMS分标准版,创业板,专业版,其除功能不同外其配置方法完全一致有喜欢系统的也可以私信我或者找我获取 一.安装打包环境[Nodejs]这个就不用我说了吧,用不小于V20的版…

c语言zixue

该文主要是记录我学习中遇到的一些重点、易出问题的内容 教材p16.17 先从一个简单的例子开始吧 #include <stdio.h> //编译预处理命令 int main() //程序的主函数 {printf("To C"); //输出语句return 0; //返回语句 } #include <stdio.h>是编译预…

ollama API 本地调用

ollama API 本地调用 前提条件&#xff0c;ollama 已经启动了模型&#xff0c;查看 ollama 中的 model 名称 ollama list使用 openai 调用 from openai import OpenAI import openaiopenai.api_key ollama openai.base_url http://localhost:11434/v1/def get_completion(pro…