mysql 一些使用技巧

1.忘記root密碼,解決辦法

/usr/local/mysql/share/mysql/mysql.server stop  (mysql4)

/usr/local/mysql/support-files/mysql.server stop  (mysql5)
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
/usr/local/mysql/bin/mysql -h localhost -u root
>>/u mysql ;

>>update user set password=password('密碼') where user='root';

>>flush privileges;

>>exit;

kill -9 mysqld 進程 

/usr/local/mysql/share/mysql/mysql.server start

2.mysqldump 遠程備份腳本

LOCAL_DB=mydb
LOCAL_USER
=user
LOCAL_PASS
=123456
ROMOTE_HOST
=127.0.0.1
ROMOTE_USER
=user1
ROMOTE_PASS
=123456
ROMOTE_DB
=mydb1
.
/mysqldump --opt --skip-opt --add-drop-table --compatible=mysql323 $LOCAL_DB|./mysql -h$ROMOTE_DB -u$ROMOTE_USER -p$ROMOTE_PASS $ROMOTE_DB
echo .........
echo done

 

3.mysqldump 導出數據庫test 的數據表product中指定proid=14數據到文本文件

mysqldump -uroot -p123456 --compatible=mysql323 -n --where=proid=10 test product>>tw.txt

 

 

MySQL裏一共有如下幾種變量
1 系統變量
  有全局變量和會話變量之分,這些變量用於系統運行,一般能通過my.ini改變啓動時的默認值
引用的時候用 select @@foo ,這些變量名一般都是mysql固定好的,不能自己改名
2 用戶自定義變量
  表示方式 @abc
set @abc:=20
只對當前會話有效,一段斷開連接就會全部丟失
3 存儲過程和函數中的變量
這類變量可以直接用abc,不用代@。在存儲過程中局部變量,想要把局部變量的值傳遞出來,可以把局部變量賦給@abc(用戶變量),等存儲過程執行完就可以通過select @abc;得到值
 
所有的變量不能存儲result set(結果集)。
客戶端,工具,經驗,穩定性
1 客戶端版本,php連接mysql的模塊版本比較低,導致查詢不能使用,特別是存儲過程裏面多個語句的情況
  目前的解決辦法是使用mysqli來處理處理連接問題;能一次連接查詢多個月語句,能返回多個結果集,能返回存儲過程的結果集
2 phpmyadmin管理數據庫的問題,到目前爲止phpmyadmin還沒有管理mysql存儲過程等新功能的可視工具,要用命令打進去,但是遇到begin ... end;裏面有;的語句會出錯,所以目前這也是一大障礙
3 有時候一個功能可以用視圖實現也能通過觸發器或存儲過程實現,這些實現方法之間的比較是個問題,在沒經驗的基礎上使用,可能無從選擇,也可能會因爲數據量的增加導致速度變慢,新技術的經驗積累是一大問題
4 對mysql新功能的穩定性還不是很確定,如果匆忙用於生產,可能存在未知的風險,目前來說這幾個新功能還有一些限制,還未完全開發完畢,應該在5.1或更高6.0纔會比較完善。目前能作的就是在一些小型不是很重要的項目上多試驗這些新功能,積累經驗 

 

 

sql (insert into table values(),(),(),(),()) 過大,在通過mysql_query 的時候,導致 MySQL server has gone away 後來找了一些資料後發現修改一下my.ini 中的這個配置就ok了

max_allowed_packet=5M

發佈了11 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章