在安裝完成MySQL 后,不僅改變r(jià)oot用戶的的密碼,也同時(shí)改變匿名用戶的密碼,方法類似改變r(jià)oot的密碼的方式:
10年積累的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有西崗免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
QUOTE:
以下為引用的內(nèi)容:
MySQL UPDATE user set password=PASSWORD('yournewpassword') where user='';
MySQLFLUSH PRIVILEGES;
2、如非必要,刪除這個(gè)匿名用戶,這樣所有人要使用MySQL 都必須提供用戶名,即便日后出了問題,也容易查找問題的源頭。
3、除了root用戶外,其他用戶包括匿名用戶(如果沒有刪除這個(gè)用戶)不應(yīng)該擁有g(shù)rant權(quán)限,防止管理權(quán)限不受控制的擴(kuò)散出去。
4、賦予用戶update\delete\alert\create\drop權(quán)限的時(shí)候,應(yīng)該限定到特定的數(shù)據(jù)庫,尤其要避免普通客戶擁有對MySQL數(shù)據(jù)庫做操作的權(quán)限,否則你的系統(tǒng)設(shè)置很可能被替換掉。
5、檢查MySQL.user表,取消不必要用戶的shutdown_priv,reload_priv,process_priv和File_priv權(quán)限,這些權(quán)限可能泄漏更多的服務(wù)器信息包括非MySQL的其它信息出去。
6、如果不打算讓你的用戶使用MySQL數(shù)據(jù)庫,在提供諸如php這樣的腳本語言的時(shí)候,重新設(shè)置或編譯你的php,取消它們對MySQL的默認(rèn)支持。
誤刪數(shù)據(jù)的幾種操作
如何事前預(yù)防誤刪數(shù)據(jù)?
誤刪行數(shù)據(jù)恢復(fù)
誤刪行數(shù)據(jù)恢復(fù)可以使用 Flashback工具 。
Flashback恢復(fù)數(shù)據(jù)的原理是通過修改binlog內(nèi)容,拿回原庫進(jìn)行回放,前提是 binlog_format=row和binlog_row_image=FULL 。
在使用Flashback進(jìn)行恢復(fù)的時(shí)候, 不建議在主庫上進(jìn)行操作 ,比較安全的做法是恢復(fù)出一個(gè)備份,或者找一個(gè)從庫作為臨時(shí)庫,在這個(gè)臨時(shí)庫上執(zhí)行操作,然后再將確認(rèn)過的臨時(shí)庫的數(shù)據(jù)恢復(fù)到主庫。
誤刪庫/表
drop table或者truncate table誤刪數(shù)據(jù)表 無法通過Flashback工具恢復(fù) ,因?yàn)閎inlog_format的格式即使是ROW模式,在binlog中記錄的也只是一條drop table或者truncate語句,因此無法進(jìn)行恢復(fù)。
此時(shí)恢復(fù)的方式需要 全量備份加增量日志的方式進(jìn)行恢復(fù) ,因此要求數(shù)據(jù)有定期的全量備份,并且實(shí)時(shí)備份binlog。
假如某人在中午12點(diǎn)誤刪除了一個(gè)庫里的某張表,恢復(fù)數(shù)據(jù)的流程如下:
mysqlbinlog恢復(fù)數(shù)據(jù)慢的原因?
如何更快的恢復(fù)誤刪的表?
在用備份恢復(fù)出臨時(shí)實(shí)例以后,將這個(gè)臨時(shí)實(shí)例設(shè)置成線上備庫的從庫:
假設(shè)此時(shí)備庫的binlog已經(jīng)被刪除,那么需要去binlog備份系統(tǒng)找到刪掉的日志文件拷貝到日志目錄下,假設(shè)文件名是master.000001,打開日志目錄下的binlog的index文件,在開頭加入master.000001,讓備庫重新識(shí)別此日志文件
延遲復(fù)制備庫
以上恢復(fù)都具有時(shí)間不可控性,如果采用上述步驟進(jìn)行恢復(fù),建議開發(fā)成工具(甚至可以做自己的DBA自動(dòng)化平臺(tái)),并大量測試后進(jìn)行使用,避免手動(dòng)誤操作帶來更大的問題。
一般的主備復(fù)制存在的問題是,假設(shè)主庫上的表被刪除,這個(gè)命令很快會(huì)被發(fā)給所有從庫,進(jìn)而導(dǎo)致從庫的數(shù)據(jù)表也被一起誤刪除。
延遲復(fù)制備庫 是可以持續(xù)保持與主庫有N秒延遲的備庫 。
假設(shè)這里N=3600,那么表示只要在1個(gè)小時(shí)以內(nèi)發(fā)現(xiàn)了誤刪除,就可以的到備庫上執(zhí)行stop slave,再通過之前講到的方法,跳過誤操作的命令(比如將誤刪除的GTID加到實(shí)例集合中),就可以恢復(fù)出需要的數(shù)據(jù)。
rm誤刪
只要你的集群是高可用,如果rm刪除了某個(gè)節(jié)點(diǎn)(只要不是惡意刪除所有節(jié)點(diǎn)),HA系統(tǒng)會(huì)自動(dòng)開始工作,選出一個(gè)新的主庫,從而保證集群工作。
一、Can’t connect to MySQL server on ‘localhost’ (10061)
翻譯:不能連接到 localhost 上的mysql
分析:這說明“l(fā)ocalhost”計(jì)算機(jī)是存在的,但在這臺(tái)機(jī)器上卻沒提供MySQL服務(wù)。
需要啟動(dòng)這臺(tái)機(jī)器上的MySQL服務(wù),如果機(jī)子負(fù)載太高沒空相應(yīng)請求也會(huì)產(chǎn)生這個(gè)錯(cuò)誤。
解決:既然沒有啟動(dòng)那就去啟動(dòng)這臺(tái)機(jī)子的mysql。如果啟動(dòng)不成功,多數(shù)是因?yàn)槟愕膍y.ini配置的有問題。重新配置其即可。
如果覺得mysql負(fù)載異常,可以到mysql/bin 的目錄下執(zhí)行mysqladmin -uroot -p123 processlist來查看mysql當(dāng)前的進(jìn)程。
二、Unknown MySQL Server Host ‘localhosadst’ (11001)
翻譯:未知的MySQL服務(wù)器 localhosadst
分析:服務(wù)器 localhosasdst 不存在?;蛘吒緹o法連接
解決:仔細(xì)檢查自己論壇下面的 ./config.inc.php 找到$dbhost重新設(shè)置為正確的mysql 服務(wù)器地址。
三、Access denied for user: ‘roota@localhost’ (Using password: YES)
翻譯:用戶 roota 訪問 localhost 被拒絕(沒有允許通過)
分析:造成這個(gè)錯(cuò)誤一般數(shù)據(jù)庫用戶名和密碼相對mysql服務(wù)器不正確
解決:仔細(xì)檢查自己論壇下面的 ./config.inc.php 找到$dbuser、$dbpw核實(shí)后重新設(shè)置保存即可。
四、Access denied for user: ‘red@localhost’ to database ‘newbbs’
翻譯:用戶 red 在localhost 服務(wù)器上沒有權(quán)限操作數(shù)據(jù)庫newbbs
分析:這個(gè)提示和問題三是不同的。那個(gè)是在連接數(shù)據(jù)庫的時(shí)候就被阻止了,而這個(gè)錯(cuò)誤是在對數(shù)據(jù)庫進(jìn)行操作時(shí)引起的。比如在select update等等。這個(gè)是因?yàn)樵撚脩魶]有操作數(shù)據(jù)庫相應(yīng)的權(quán)力。比如select 這個(gè)操作在mysql.user.Select_priv里記錄 Y 可以操作N 不可以操作。
解決:如果是自己的獨(dú)立主機(jī)那么更新mysql.user 的相應(yīng)用戶記錄,比如這里要更新的用戶為red ?;蛘咧苯有薷?./config.inc.php 為其配置一個(gè)具有對數(shù)據(jù)庫操作權(quán)限的用戶
或者通過如下的命令來更新授權(quán)grant all privileges on dbname.* to ‘user’@’localhost’ identified by ‘password’
提示:更新了mysql庫中的記錄一定要重啟mysql服務(wù)器才能使更新生效
FLUSH PRIVILEGES;
五、No Database Selected
翻譯:沒有數(shù)據(jù)庫被選擇上
分析:產(chǎn)生的原因有兩種
config.inc.php 里面$dbname設(shè)置的不對。致使數(shù)據(jù)庫根本不存在,所以在 $db-select_db($dbname); 時(shí)返回了false
和上面問題四是一樣的,數(shù)據(jù)庫用戶沒有select權(quán)限,同樣會(huì)導(dǎo)致這樣的錯(cuò)誤。當(dāng)你發(fā)現(xiàn)config.inc.php的設(shè)置沒有任何問題,但還是提示這個(gè)錯(cuò)誤,那一定就是這種情況了。
解決:對癥下藥
打開config.inc.php 找到$dbname核實(shí)重新配置并保存
同問題四的解決方法
六、Can’t open file: ‘xxx_forums.MYI’. (errno: 145)
翻譯:不能打開xxx_forums.MYI
問題分析:
這種情況是不能打開 cdb_forums.MYI 造成的,引起這種情況可能的原因有:
1、服務(wù)器非正常關(guān)機(jī),數(shù)據(jù)庫所在空間已滿,或一些其它未知的原因,對數(shù)據(jù)庫表造成了損壞。
2、類 unix 操作系統(tǒng)下直接將數(shù)據(jù)庫文件拷貝移動(dòng)會(huì)因?yàn)槲募膶俳M問題而產(chǎn)生這個(gè)錯(cuò)誤。
解決方法:
1、修復(fù)數(shù)據(jù)表
可以使用下面的兩種方式修復(fù)數(shù)據(jù)表:(第一種方法僅適合獨(dú)立主機(jī)用戶)
1)使用 myisamchk ,MySQL 自帶了專門用戶數(shù)據(jù)表檢查和修復(fù)的工具 —— myisamchk 。更改當(dāng)前目錄到 MySQL/bin 下面,一般情況下只有在這個(gè)下面才能運(yùn)行 myisamchk 命令。常用的修復(fù)命令為:myisamchk -r 數(shù)據(jù)文件目錄/數(shù)據(jù)表名.MYI;
2)通過 phpMyAdmin 修復(fù), phpMyAdmin 帶有修復(fù)數(shù)據(jù)表的功能,進(jìn)入到某一個(gè)表中后,點(diǎn)擊“操作”,在下方的“表維護(hù)”中點(diǎn)擊“修復(fù)表”即可。
注意:以上兩種修復(fù)方式在執(zhí)行前一定要備份數(shù)據(jù)庫。