在Linux下訪問不了MySQL數(shù)據(jù)庫怎么回事
MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉庫內(nèi),這樣就增加了速度并提高了靈活性。在Linux系統(tǒng)下無法訪問mysql,這是怎么回事呢?Linux系統(tǒng)下無法訪問mysql該怎么辦呢?下面我們一起來看看解決方法。
Linux系統(tǒng)下無法訪問mysql怎么辦?
1、問題及異常
ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@75d634ea -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
2、查找原因
費(fèi)勁周知,確定是MySQL權(quán)限的問題
3、解決過程
1》 mysql -uroot -proot mydbName
2》 grant all privileges on *.* to wangs@‘%’ identified by ‘123456’;
3》 flush privileges;
4》 exit;
5》 /etc/init.d/mysql restart
4、命令的說明
進(jìn)入 mysql ,用戶為 root,密碼為 root,數(shù)據(jù)庫為 mydbName,-u 意為用戶,-p 意為密碼,
增加用戶 wangs,所有權(quán)限,數(shù)據(jù)庫為 *,后面的 .* 不可少,% 代表對所有遠(yuǎn)程的 IP 地址,如果要限定 IP 地址的話,單獨(dú)寫上 IP 地址,
密碼是 123456,注意引號 ‘ 不可少,用來表示是字符串。
以上命令和過程均不可省略。
補(bǔ)充:MySQL 數(shù)據(jù)庫常用命令
create database name; 創(chuàng)建數(shù)據(jù)庫
use databasename; 進(jìn)入數(shù)據(jù)庫
drop database name 直接刪除數(shù)據(jù)庫,不提醒
show tables; 顯示表
describe tablename; 查看表的結(jié)構(gòu)
select 中加上distinct去除重復(fù)字段
mysqladmin drop databasename 刪除數(shù)據(jù)庫前,有提示。
顯示當(dāng)前mysql版本和當(dāng)前日期
select version(),current_date;
數(shù)據(jù)庫維護(hù)方法
在MySQL使用的過程中,在系統(tǒng)運(yùn)行一段時(shí)間后,可能會(huì)產(chǎn)生碎片,造成空間的浪費(fèi),所以有必要定期的對MySQL進(jìn)行碎片整理。
當(dāng)刪除id=2的記錄時(shí)候,發(fā)生的現(xiàn)象
這個(gè)時(shí)候發(fā)現(xiàn)磁盤的空間并沒有減少。這種現(xiàn)象就叫做碎片化(有一部分的磁盤空間在數(shù)據(jù)刪除以后(空),還是無法被操作系統(tǒng)所使用。)
常見的優(yōu)化:
# alter table xxx engine myisam;
# optimize table t1;
注意: 在實(shí)際開發(fā)的過程中,上面兩個(gè)語句盡量少使用,因?yàn)樵谑褂玫倪^程中,MySQL的表的結(jié)構(gòu)會(huì)整體全部重新整理,需要消耗很多的資源,建議在凌晨兩三點(diǎn)鐘的時(shí)候執(zhí)行。(在linux下有定時(shí)器腳本可以執(zhí)行,crontab)