MySQL8 忽略大小寫配置lower_case_table_names = 1 (CentOS7)
CentOS7安裝了MySQL8社群版後,Navicat連線正常,跑程式,起來後報錯:找不到QRTZ_LOCK表,庫裡查,確實有這表,只不過是小寫,大致定位到應該是資料庫大小寫配置問題。雖定位準確,但還是耗了很久的功夫。
1. 首先檢查防火牆
檢查防火牆是否開啟,以及3306埠配置是否準確
2. MySQL8 忽略大小寫配置lower_case_table_names = 1 (CentOS7)的具體操作
我的做法是:
(1)winscp修改mysql.conf,[mysqld]新增lower_case_table_names=1,儲存
[mysqld] lower_case_table_names=1
(2)刪除/usr/local/mysql/data(建議先備份,因我沒有歷史資料,直接刪除沒有歷史負擔)因我是已經裝完MySQL8以後在使用時提示找不到表才發現需要修改這個“大小寫忽略配置”的,所以在處理時已經有 這個目錄了。
(3)啟動MySQL
systemctl start mysqld
systemctl stop mysqld
systemctl status mysqld.service#可以檢視密碼
(4)初始化資料庫
mysqld --initialize
(5)修改許可權,提升許可權,外網訪問
systemctl status mysqld.service#檢視密碼 用檢視得到的密碼登入後 登入資料庫 mysql -u root -p 輸入密碼 mysql> use mysql; 查詢host mysql> select user,host from user; 4.建立host 如果沒有"%"這個host值,就執行下面這兩句: mysql> update user set host='%' where user='root'; mysql> flush privileges; 5.授權使用者 任意主機以使用者root和密碼mypwd連線到mysql伺服器 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypwd' WITH GRANT OPTION; mysql> flush privileges; %代表任何IP,均可以使用root使用者的密碼來訪問到該伺服器上的MySQL資料庫。比如Navicat裡用root的賬號密碼訪問 %修改為具體的則限定某個具體IP mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION; mysql> flush privileges;
3.具體參考:
(2)https://bugs.mysql.com/bug.php?id=90695
In order to make this work in MySQL 8.0 and linux follow the steps bellow
0) Backup mysql schema before executing the following steps using
mysqldump -h localhost -u root -p mysql > /home/username/dumps/mysqldump.sql
and then stop mysql using
sudo service mysql stop
- move or remove /var/lib/mysql directory. This will delete all databases!!!
因為是首次安裝,沒有歷史負擔,我直接給刪掉了。建議先複製備份到其他位置
mv /var/lib/mysql /tmp/mysql
2)Create a new /var/lib/mysql directory and make mysql user as owner
mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
chmod 750 /var/lib/mysql
3)edit /etc/mysql/mysql.conf.d/mysqld.cnf and add the following line after [mysqld]
lower_case_table_names=1
4) Initialize mysql using the following
sudo systemctl start mysqld
- (Optional) Repeat
chown -R mysql:mysql /var/lib/mysql
chmod 750 /var/lib/mysql