MySQL 8 忽略表名大小寫
MySQL 8 忽略表名大小寫
文章目錄
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、刪除資料目錄
#查詢資料庫安裝目錄 ../lib/mysql
find / -type d -name mysql
eg: /var/lib/mysql
#備份好資料後,刪除/var/lib/mysql 目錄
4、修改 my.cnf
配置檔案
# 配置檔案一般在 /etc/my.cnf 下
vim /etc/my.cnf
# 新增 skip-grant-tables,實現免密登陸
[mysqld]
......
skip-grant-tables
#default_authentication_plugin=mysql_native_password
......
#ps:MySQL8 需要配置 default_authentication_plugin=mysql_native_password 也可以新增上去
#儲存並且退出。
5、重新初始化 MySQL
#重新初始化mysql,並制定策略
mysqld --initialize --user=mysql --lower-case-table-names=1
#啟動服務
systemctl start mysqld;
6、mysql無密碼登陸
#mysql 免密登陸
mysql;
7、修改user表資料
-- 指定資料庫
use mysql;
-- 檢視user、host、加密策略等資訊
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 |
+------------------+-----------+-----------------------+---------------------------+
-- 清空root 密碼,並更改 root使用者 host選項為 %
update user set host = '%',authentication_string = '' where user = 'root';
-- 修改成功後,退出mysql
exit;
8、再次修改配置檔案
# vim /etc/my.cnf
#註釋掉 skip-grant-tables
[mysqld]
......
#skip-grant-tables
9、重啟服務
systemctl restart mysqld;
10、重新登陸
#經過步驟7,已經將root密碼置空,無需輸入密碼,直接回車即可登入
mysql -uroot -p;
Enter password:
11、重新給root設定密碼
alter user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Bowden_12345';
至此,完成mysql 8 表名大小寫配置。
二、docker 環境下修改
如果mysql是docker方式部署的話,可以先備份資料,然後重新執行一個容器,在啟動命令後面追加引數即可,例如:
#--lower-case-table-names=1 配置 mysql忽略大小寫
# 映象 mysql:8.0
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
相關文章
- Mysql 表名大小寫問題MySql
- MySQL表名區分大小寫MySql
- MySQL 關於表名大小寫的引數MySql
- mysql表名忽略大小寫問題記錄MySql
- MySQL表名不區分大小寫的設定方法MySql
- mysql8.0表名忽略大小寫(Ubuntu24.04)MySqlUbuntu
- mysql大小寫敏感MySql
- MySQL大小寫問題MySql
- git預設忽略檔名大小寫Git
- MySQL資料庫中庫、表名、欄位的大小寫問題MySql資料庫
- mysql 大小寫敏感問題MySql
- MySQL中的大小寫敏感MySql
- MySQL大小寫敏感說明MySql
- DM8 字串大小寫敏感字串
- MySQL 5.7線上設定忽略表複製方法MySql
- PowerDesigner表名、列名大小寫轉換
- mysql大小寫問題解決MySql
- 配置mysql不區分大小寫MySql
- mysql 表明不區分大小寫MySql
- MySQL binary 區分大小寫MySql
- git提交時支援檔名大小寫的修改Git
- MySQL不區分大小寫設定MySql
- mysql字串之大小寫匹配查詢MySql字串
- Git中如何設定區分檔名大小寫Git
- mysql 5.X 在linux上,表名大小寫敏感問題解決辦法MySqlLinux
- mysql 大小寫敏感 lower_case_table_namesMySql
- MySQL字串函式 字串大小寫轉換MySql字串函式
- 設定MYSQL不區分表大小寫MySql
- 使MySQL查詢區分大小寫(轉)MySql
- Git無法檢測到檔名大小寫的更改Git
- MySQL-資料記錄大小寫轉換MySql
- linux 環境下mysql忽略大小寫LinuxMySql
- MySQL模糊查詢(like)時區分大小寫MySql
- 更改MYSQL資料庫不區分大小寫MySql資料庫
- 更改MySql表和欄位區分大小寫MySql
- ORACLE物件名大小寫敏感性相關的深入分析Oracle物件
- 修改RAC引數指定節點名跟大小寫有關係
- 在Linux下管理MySQL的大小寫敏感性LinuxMySql