Linux MySQL 8.0.29 忽略表名大小寫配置
- 問題背景
- 解決方案
- 遇到的問題:
問題背景
突然發現有個大寫的表報不存在。
在Windows上,MySQL是默認支持忽略大小寫的。
這個時候你要查詢一下是不是沒有配置:
SHOW VARIABLES LIKE 'lower_case_table_names';
如果是0,說明沒有配置,具體配置:
[mysqld]
lower_case_table_names=1 # 設置表名不區分大小寫
但是,一直重啟失敗。。。
說明我們的MySQL太新了。
那下面的解決方案也許適合你。
解決方案
MySQL 8.0.17之后,如果數據目錄已經存在(就是你已經初始化msyql了),那就涼涼了,需要刪除所有數據重新初始化。
# 1、備份所有數據庫(必須要,不然數據全部沒有了!!!)
mysqldump -u root -p --all-databases > all-databases-backup.sql# 2、刪除舊數據目錄
sudo rm -rf /var/lib/mysql/ # 默認路徑,根據實際安裝目錄調整# 3、重新初始化 MySQL
sudo mysqld --initialize --user=mysql --lower-case-table-names=1# 4、設置 root 密碼
sudo grep 'temporary password' /var/log/mysqld.log # 獲取臨時密碼,根據實際安裝目錄調整# 5、登錄MySQL
mysql -u root -p# 6、修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密碼';# 7、導入備份的數據庫
mysql -u root -p < all-databases-backup.sql
遇到的問題:
mysqldump: Got error: 1045: Access denied for user ‘root’@‘localhost’ (using password: YES) when trying to connect
在執行第一步備份的時候,說明你的密碼錯了。
重新設置一下密碼即可:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx';