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刪除,重新啟動;
填坑的路途很無奈呀···