mysql對表名設(shè)置忽略大小寫及后續(xù)改root密碼問題

1.問題

部署了一個開源項目在服務(wù)器上,運行時報錯表不存在···
在本地運行的好好的,數(shù)據(jù)庫也是全量導(dǎo)過去的呀,仔細一想發(fā)現(xiàn)是不是大小寫問題,一試果然。


2.解決

linux下mysql默認是要區(qū)分表名大小寫的,mysql是否區(qū)分大小寫設(shè)置是由參數(shù)lower _ case _ table _ names決定的。
ower_case_table_names = 0
區(qū)分大小寫(即對表名大小寫敏感),默認是這種設(shè)置。
lower_case_table_names = 1
不區(qū)分大小寫(即對表名大小寫不敏感)
依次執(zhí)行以下命令解決:

mysqladmin -uroot -p shutdown                //以安全模式關(guān)閉數(shù)據(jù)庫
vi /etc/mysql/mysql.conf.d/mysqld.cnf      //添加下面一行設(shè)置
//······
lower_case_table_names=1
//······
service mysql start                                  //啟動數(shù)據(jù)庫

哈哈,然后你就會發(fā)現(xiàn)啟動不了。。。。太xx了。。。
查了資料發(fā)現(xiàn)8.0變態(tài)呀,這個配置需要在安裝完成之后,初始化數(shù)據(jù)庫之前進行改動,不然就會報錯:
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
簡直太殘忍。。
沒得辦法只能干掉數(shù)據(jù)重新設(shè)置(:

//首先停掉MySQL
mysqladmin -uroot -p shutdown
//刪除 MySQL的數(shù)據(jù) /var/lib/mysql
rm -rf /var/lib/mysql
//然后再進行上述操作即可。

3.修復(fù)

由于我們刪除了/var/lib/mysql/目錄,所以再啟動mysql會重新初始化,這樣你的root密碼就不知道了,還得找回來呀。

//還得先停掉MySQL,這時不知道密碼就不能使用安全停止了
sudo systemctl stop mysql
//然后類似設(shè)置忽略大小寫,添加下面一行設(shè)置
vi /etc/mysql/mysql.conf.d/mysqld.cnf 
//······
skip-grant-tables    //設(shè)置不需要驗證權(quán)限登錄
//······
//啟動數(shù)據(jù)庫
sudo service mysql start

然后進去改密碼

//使用mysql命令進去,回車兩次即可
mysql -u root -p
//更改密碼
use mysql
update user set authentication_string ='' where user ='root';
alter user 'root'@'localhost' identified with caching_sha2_password by 'password';
quit;

恢復(fù)校驗,把剛剛添加的skip-grant-tables刪除,重新啟動;

填坑的路途很無奈呀···

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容